R параллельный rbindlist не работает

#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)
  

в вашей функции.