如何自动保存R文件

问题描述 投票:0回答:1

我越来越多地使用 RStudio,并且最常创建 .R、.Rmd 和 .html 等文件。

我想要版本/使版本控制成为可能。因此,我将文件上传到 OneDrive,但当然只有当我记得使用 CTRL+S 保存时才会保存文件。

有没有办法将 R 文档设置为每 5 分钟自动保存一次,或类似的方法?

r autosave
1个回答
0
投票

虽然没有什么可以替代养成定期执行 CTRL+S 每次进行更改的习惯,但您可以使用

later
包和自定义函数来实现您想要的结果。

下面的 auto_save 函数将一直运行,直到您关闭 R 会话。它还会检查以确保您列出/想要保存的文件存在,并将在控制台中打印一条消息,让您知道每个文件的保存时间。

要检查该功能是否按预期工作(无需等待五分钟),我建议将

later(auto_save, delay = 300)
更改为
later(auto_save, delay = 10)
之类的内容。然后,一旦您确定它有效:

  • 关闭R并重新启动
  • 编辑回
    later(auto_save, delay = 300)
  • 再次运行auto_save函数代码
  • 然后运行
    later(auto_save, delay = 0)
install.packages("later")
library(later)

auto_save <- function() {
  
  # Files in your working directory you want to save (add more where necessary)
  files <- c("your_script.R", "your_rmd.Rmd")
  
  # OneDrive path for saving files
  onedrive_path <- "C:/path/to/your/onedrive"
  
  # Define the destination file paths
  backup_files <- file.path(onedrive_path, files)
  
  # Copy files but only if they exist, print status to console
  lapply(seq_along(files), function(i) {
    
    if (file.exists(files[i])) {
      
      file.copy(files[i], backup_files[i], overwrite = TRUE)
      cat("Saved:", files[i], "\n   to:", backup_files[i], "\n   at:",
          format(Sys.time(), "%Y-%m-%d %H:%M:%S"), "\n")
      
    } else {
      
      print(paste("File not found:", files[i]))
      
    }
    
  })
  
  # Schedule function to run again after n seconds
  later(auto_save, delay = 300)
  
}

运行自动保存功能:

later(auto_save, delay = 0)
© www.soinside.com 2019 - 2024. All rights reserved.