我是 R 新手。我编写了这个非常简单的脚本来突出我的问题。如果我运行这个常规 for 循环测试数据会在每次迭代时按照我想要的方式更新。
a = 5
b = 4
c = 3
testdata = matrix(nrow=100, ncol=5)
for(j in 1:100){
testdata[j,1] <- a*j
testdata[j,2] <- b*j
testdata[j,3] <- c*j
testdata[j,4] <- (a+b)*j
testdata[j,5] <- (a+c)*j
}
然而,这个使用 foreach 的并行版本完成了计算,但它们没有在 testdata 中更新。
a = 5
b = 4
c = 3
testdata = matrix(nrow=100, ncol=5)
library(foreach)
library(doParallel)
library(doMC)
registerDoMC()
getDoParWorkers() # Checking the number of cores.
foreach(j = 1:100) %dopar% {
testdata[j,1] <- a*j
testdata[j,2] <- b*j
testdata[j,3] <- c*j
testdata[j,4] <- (a+b)*j
testdata[j,5] <- (a+c)*j
}
我试图在互联网上和其他地方关注示例,但大多数示例在 R shoptalk 中太深了,我无法理解。我怎样才能让这个并行版本做非并行版本做的事情。谢谢。