Как исправить «не удалось найти функцию» с помощью parSapply - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь заменить sapply на parSapply в моем скрипте, чтобы сократить время выполнения.

Вот скрипт, который я использую с примером кадра данных:

library(relaimpo) 

gene1 <- c(1, 2, 3, 4) 
gene2 <- c(3,1,2, 4) 
age <- c(20, 40, 60, 10) 
gender <- c("F", "M", "F", "F") 
datatest<- data.frame(gene1, gene2, age, gender) 

TEST<-sapply(datatest[,(1:2)], function(i) calc.relimp(lm(i ~ age+gender, data=datatest))$lmg) 


##until now it works; Here is when I replace sapply by parSapply: 

cl <- makeCluster(4) 
TEST2 <- parSapply(cl, datatest[,(1:2)], function(i) calc.relimp(lm(i ~ age+gender, data=datatest))$lmg) 

Я получаю это сообщение об ошибке:

Ошибка в checkForRemoteErrors (val): 2 узла выдавали ошибки; первый ошибка: не удалось найти функцию "calc.relimp"


Кто-нибудь знает, как это исправить? Заранее большое спасибо!!!

Бест,

Беренжер

1 Ответ

2 голосов
/ 24 мая 2019

Вам необходимо экспортировать необходимые объекты в вашем кластере.Что-то вроде

clusterExport(cl, varlist = c('calc.relimp'))  # add other objects needed

должно сработать.

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