首页 > 解决方案 > R在终端中一次运行多个脚本

问题描述

我有一个加载、处理和保存许多文件的 R 函数。这是一个虚拟版本:

load_process_saveFiles <- function(onlyFiles = c()){
    
  allFiles <- paste(LETTERS, '.csv', sep = '')
  
  # If desired, only include certain files
  if(length(onlyFiles) > 0){
    allFiles <- allFiles[allFiles %in% onlyFiles]
  }
  
  for(file in allFiles){
    # load file
    rawFile <- file
    
    # Run a super long function
    processedFile <- rawFile
    
    # Save file
    # write.csv(processedFile, paste('./Other/Path/', file, sep = ''), row.names = FALSE)
  
    cat('\nDone with file ', file, sep = '')
  }  
}

它必须运行大约 30 个文件,每个文件大约需要 3 分钟。遍历整个事情可能非常耗时。我想做的是同时单独运行每一个,这样总共需要 3 分钟,而不是 3 x 30 = 90 分钟。

我知道我可以通过创建一堆 RStudio 会话或许多终端选项卡来实现这一点,但是我无法处理一次打开那么多会话或选项卡。

理想情况下,我希望将所有具有单独功能的文件列在一个batchRun.R文件中,我可以从终端运行该文件:

source('./PathToFunction/load_process_saveFiles.R')

load_process_saveFiles(onlyFiles = 'A.csv')
load_process_saveFiles(onlyFiles = 'B.csv')
load_process_saveFiles(onlyFiles = 'C.csv')
load_process_saveFiles(onlyFiles = 'D.csv')
load_process_saveFiles(onlyFiles = 'E.csv')
load_process_saveFiles(onlyFiles = 'F.csv')

然后$ RScript batchRun.R从终端运行。

我尝试在 SO 上查找不同的示例以尝试完成类似的操作,但每个示例都有一些独特的功能,我就是无法让它工作。我正在尝试做的事情可能吗?谢谢!

标签: rterminal

解决方案


并行包在这种情况下很有用。如果你使用的是 Linux 操作系统,我会推荐 doMC 包而不是并行。这个 doMC 包甚至对于循环机器学习项目中使用的大数据也很有用。


推荐阅读