有没有办法同时运行2个不同的代码块。我一直在研究R中的并行包,它们似乎都基于在循环中运行相同的函数。我正在寻找一种同时运行不同功能的方法(循环的1次迭代)。例如,我想在某个数据对象上创建一个模型,同时在另一个对象上创建另一个模型。我可以通过启动R的另一个实例来做到这一点,但宁愿将它全部保存在同一个脚本中。这可能吗?我很感激任何建议。
答案 0 :(得分:3)
您可以尝试替换/引用函数,然后并行评估它们。
library(parallel)
ExpressionVect <- c(substitute(function1()),
substitute(function2()))
mclapply(ExpressionVect, eval, mc.cores= 2)
这允许在函数是独立函数时并行评估函数
答案 1 :(得分:0)
您可以使用clusterMap
,这是mapply
的并行版本。这假设您希望在每个节点上安装相同类型的模型(lm,glm,rpart,等等)。
clus <- makeCluster(2)
out <- clusterMap(clus, lm, formula=list(speed ~ dist, mpg ~ cyl + disp + hp),
data=list(cars, mtcars))