因此,我已经使用一个循环成功地在R中使用了每个%dopar%(例如“ i”)。现在,我正在尝试使用两个循环(例如“ i”和“ j”)进行foreach。
我需要在两个大型数据框之间进行相关性分析。 DF1具有22个特征和280个样本(值“ i”遍历该DF的行)。 DF2具有大约20,000个特征和相同的280个样本(值“ j”遍历该DF的行)
从调试中,我了解到的是,我编写的这段代码仅在i和j具有相同值的循环中运行。即,对于1和j = 1,2,..... 22。
对于其他j值,循环未运行。有人可以帮我弄清楚如何编辑代码以使其适用于所有“ i”和“ j”值吗?非常感谢你!
我的代码如下。
corrResult1<-foreach(i=1:nrow(DF1),j=1:nrow(DF2),.combine=rbind) %dopar% {
oneValueDF1 = as.numeric(DF1[i,])
oneValueDF2 = as.numeric(DF2[j,])
myCor1 = cor(x = oneValueDF1, y = oneValueDF2 , method = "pearson")
#correlation test
myCor1_test = cor.test(oneValueDF2, oneValueDF1, method="pearson")
tempMatrix = cbind(oneValueDF1, oneValueDF2,
myCor1_test$statistic, # T stat
myCor1_test$parameter, #DF
myCor1_test$p.value, #p alue
myCor1_test$estimate, #corr coeff
myCor1_test$conf.int[1], #conf int 1
myCor1_test$conf.int[2], #conf int 2
myCor1_test$null.value,
myCor1_test$alternative,
myCor1_test$method)
tempMatrix
}
答案 0 :(得分:0)
这有效。如果它对任何人都有用:
corrResult1<-foreach(i=1:nrow(DF1),.combine=rbind) %:%
foreach(j=1:nrow(DF2),.combine=rbind) %dopar% {
oneValueDF1 = as.numeric(DF1[i,])
oneValueDF2 = as.numeric(DF2[j,])
myCor1 = cor(x = oneValueDF1, y = oneValueDF2 , method = "pearson")
#correlation test
myCor1_test = cor.test(oneValueDF2, oneValueDF1, method="pearson")
tempMatrix = cbind(oneValueDF1, oneValueDF2,
myCor1_test$statistic, # T stat
myCor1_test$parameter, #DF
myCor1_test$p.value, #p alue
myCor1_test$estimate, #corr coeff
myCor1_test$conf.int[1], #conf int 1
myCor1_test$conf.int[2], #conf int 2
myCor1_test$null.value,
myCor1_test$alternative,
myCor1_test$method)
tempMatrix
}