Вложенный foreach% допар% в R - PullRequest
       6

Вложенный foreach% допар% в R

0 голосов
/ 29 января 2019

Итак, я успешно использовал foreach% dopar% в R с одной петлей (скажем «i»).Прямо сейчас я пытаюсь использовать foreach с двумя циклами (скажем, «i» и «j»).

Мне нужно запустить корреляционный анализ между двумя большими фреймами данных.DF1 имеет 22 объекта и 280 выборок (значение «i» проходит по строкам этого DF).DF2 имеет около 20 000 объектов и те же 280 выборок (значение «j» проходит по строкам этого DF)

Из моей отладки я понял, что написанный мной код работает только для циклов, гдеi и j имеют одинаковое значение.i, e, для 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 

}

1 Ответ

0 голосов
/ 30 января 2019

Это работает.В случае, если это полезно для кого-либо:

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 

         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...