【发布时间】:2018-03-04 09:02:27
【问题描述】:
我在 Windows 7 中运行 RStudio。我编写了一个主脚本,它生成 57 个新的 R 脚本,每个脚本都包含基于两个参数运行函数的命令:
vector1 <- c(1:19)
vector2 <- c(1:3)
首先,主脚本使用两个for循环(一个对vector1使用索引'abc',一个对vector2使用索引'def')来生成我的工作目录中的 57 个脚本中的每一个都采用以下文件名约定:
run_inference_<<vector1[abc]>>_<<vector2[def]>>.R
该部分成功运行 - 57 个脚本中的每一个都是使用正确的命令生成的。我的工作目录现在包含文件 run_inference_1_1.R、run_inference_1_2.R 等。
我要做的最后一件事是从我的主人那里同时运行所有 57 个脚本。我在 for 循环中尝试了以下内容:
system(paste0("Rscript run_inference_",abc, "_", def, ".R"),wait = F)
这不起作用。但是,如果我打开 57 个生成的脚本之一并运行它,那么我会从该脚本中获得所需的结果。这告诉我问题出在我编写的 system() 命令中。
57 个脚本中的每一个都不会(还)计算密集型,我现在想做的测试应该在我的 PC 上花费 2 分钟。请问如何编辑我的 system() 命令以同时执行所有 57 个脚本?
【问题讨论】:
-
sapply(paste0("Rscript run_inference_",abc, "_", def, ".R"), system, wait = F)没有评论生成和运行 57 脚本是否适合您的问题。 -
我确实回应了 Vlo 不言而喻的担忧,即可能有更好的方法来做到这一点。为什么要编写脚本,而不是执行诸如获取所需输入的函数并使用所需的 57 种不同输入运行该函数之类的事情?
-
我有一台资源充足的 PC,应该能够处理非常密集的工作,并且更熟悉并行计算的同事告诉我,考虑到可用的情况,这项任务应该是可行的。我们会看到的!
标签: r parallel-processing system