#r
#r
Вопрос:
У меня есть функция, которая использует rbindlist, и я хотел бы вызвать эту функцию с помощью parLapply . Упрощенная версия ниже:
func <- function(x){
df1 <- data.frame(a = c(x,2), b = c(3,4))
df2 <- data.frame(a = c(x,2), b = c(4,4))
rbindlist(list(df1,df2))
}
cl <- makeCluster(getOption('cl.cores', detectCores()))
tmp <- parLapply(cl,c(1,2),func)
stopCluster(cl)
Однако я получаю сообщение об ошибке, в котором говорится:
Ошибка в checkForRemoteErrors (val): 2 узла выдали ошибки; первая ошибка: не удалось найти функцию «rbindlist»
Комментарии:
1. Я тоже не могу найти
rbindlist
. В какой библиотеке он находится?2. Вы инициализировали эту библиотеку на своих узлах кластера?
clusterEvalQ(cl, library(data.table))
?3. да, возможно, вам придется инициализировать или просто добавить
library(data.table)
фактическую функцию.4. это решило проблему, спасибо!
Ответ №1:
При использовании других библиотек с parlapply
убедитесь, что вы правильно загружаете их на каждый узел. вы можете сделать
clusterEvalQ(cl, library(data.table))
Перед выполнением ваших команд или включением
require(data.table)
в вашей функции.