Ошибка в {: задача 3 не удалась - RcallMethod: попытка вызвать метод объекта NULL.

Любая помощь в этом будет принята с благодарностью.

У меня есть следующий код R (следуя руководству по адресу https://www.r-bloggers.com/parallel-r-loops-for-windows-and-linux/) для параллельного выполнения 233 взаимоисключающих вычислений. На машине, где выполняется этот код, имеется 4 ядра и 32 ГБ оперативной памяти.

# Calculate the number of cores
    no_cores <- detectCores() - 1
    # initiate cluster
    cl <- makeCluster(no_cores)
    registerDoSNOW(cl)

    # Process sandboxes in parallel - there are 233 sandboxes in total
    foreach (j=1:nrow(sandboxes), .packages=c("dplyr", "rJava", "RJDBC", "lazyeval", "caTools", "stringr", "readxl")) %dopar%
    {
      print("Execution is in foreach block now")
      // Do stuff
    }
    stopCluster(cl)

Я получаю сообщение об ошибке еще до того, как выполнение начнется внутри цикла foreach.

Error in { : 
  task 3 failed - "RcallMethod: attempt to call a method of a NULL object."

Вот вывод из sessionInfo()

R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] doSNOW_1.0.14     snow_0.4-2        doParallel_1.0.10 iterators_1.0.8   foreach_1.4.3     readxl_0.1.1      stringr_1.2.0     caTools_1.17.1   
 [9] lazyeval_0.2.0    RJDBC_0.2-5       DBI_0.6-1         rJava_0.9-8       dplyr_0.5.0      

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.10     codetools_0.2-15 assertthat_0.1   bitops_1.0-6     R6_2.2.0         magrittr_1.5     stringi_1.1.3    tools_3.3.3     
 [9] compiler_3.3.3   tibble_1.3.0

person KalC    schedule 28.08.2017    source источник
comment
Вы экспортируете свои данные, чтобы сделать их доступными для рабочих? Найдите ?clusterExport().   -  person Damiano Fantini    schedule 28.08.2017
comment
Из stackoverflow.com/questions/ 18028452/ ... Пакет doParallel автоматически экспортирует переменные в рабочие процессы, на которые ссылается цикл foreach. - Нет? Нужно ли явно экспортировать все данные?   -  person KalC    schedule 28.08.2017
comment
Проблема в ваших действиях, и мы ничего об этом не знаем. Вы пытались запустить цикл с помощью %do%?   -  person Roland    schedule 28.08.2017
comment
Да, тут трудно найти проблему...   -  person Damiano Fantini    schedule 28.08.2017
comment
@Roland - это действительно так. Я вставил что-то простое, например print(j), и это сработало. Посмотрим на clusterExport()   -  person KalC    schedule 28.08.2017
comment
Здравствуйте, вы решили проблему? Я сталкиваюсь с той же проблемой. Я использовал clusterExport, но это не сработало.   -  person boyaronur    schedule 15.01.2019
comment
К сожалению нет. Я использовал data.table (вместо data.frames), чтобы преодолеть некоторые проблемы. Параллельное выполнение подходит только для задач с интенсивным использованием процессора. У меня была интенсивная память. Извини :(   -  person KalC    schedule 15.01.2019