gpt4 book ai didi

使用 system() 命令运行多个 R 脚本

转载 作者:行者123 更新时间:2023-12-01 11:19:02 25 4
gpt4 key购买 nike

我在 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.Rrun_inference_1_2.R

我想做的最后一件事是同时运行我的主人的所有 57 个脚本。我在 for 循环中尝试了以下内容:

system(paste0("Rscript run_inference_",abc, "_", def, ".R"),wait = F)

这是行不通的。但是,如果我打开 57 个生成的脚本之一并运行它,那么我将从该脚本中获得所需的结果。这告诉我问题出在我编写的 system() 命令中。

57 个脚本中的每一个都不是计算密集型的(目前),我现在想做的测试在我的 PC 上应该需要 2 分钟。请问如何编辑我的 system() 命令以同时执行所有 57 个脚本?

最佳答案

您不能通过使用大脚本调用一次 system 来执行此操作,除非您正在运行的程序知道如何并行化脚本本身。为此,您可以从不同的 R 进程多次调用 system

scripts <- paste0("Rscript run_inference_", abc, "_", def, ".R")

# make lots of R processes, assuming the script to be called won't eat CPU
cl <- parallel::makeCluster(30)

parallel::parLapply(cl, scripts, function(script) system(script))
parallel::stopCluster(cl)

关于使用 system() 命令运行多个 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46370537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com