r - 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 上查找不同的示例以尝试完成类似的操作,但每个示例都有一些独特的功能,我就是无法让它工作。我正在尝试做的事情可能吗?谢谢!
解决方案
并行包在这种情况下很有用。如果你使用的是 Linux 操作系统,我会推荐 doMC 包而不是并行。这个 doMC 包甚至对于循环机器学习项目中使用的大数据也很有用。
推荐阅读
- javascript - 重定向到主页
- django - Apache 上的 SMTPAuthenticationError 但标准服务器上没有。DJANGO 和 Apache2
- javascript - 绑定javascript后如何调用函数
- python - 该模型不适合 Tensorflow 和 GPU 的 Keras 错误
- bash - 如何在shell脚本中按函数对字符串数组进行排序
- javascript - 如何检索 yield 函数调用的值?
- java - Android 应用程序仅在真实设备上引发错误
- excel - 使用 vba 复制已打开的 IE 页面上的所有内容
- java - java中的@Scheduled和scheduledExecutorService.scheduleWithFixedRate
- docker - 在 dockerfile 中复制的文件:如果在特定位置,则找不到