Функция не найдена в R doParallel ‘foreach’ – Ошибка в {: task 1 failed – “не удалось найти функцию” растровый “

Я пытаюсь использовать высокопроизводительный кластер в моем учреждении в первый раз, и я столкнулся с проблемой, которую я не могу решить.

Следующий код возвращает ошибку:

ptime<-system.time({ r <- foreach(z = 1:length(files),.combine=cbind) %dopar% { raster <- raster(paste(folder,files[1],sep="")) data<-getValues(raster) clp <- na.omit(data) for(i in 1:length(classes)){ results[i,z]<-length(clp[clp==classes[i]])/length(clp) print(z) } } }) Error in { : task 1 failed - "could not find function "raster"" 

А также попробовал другой код foreach для другой задачи, которую у меня есть:

 r <- foreach (i=1:length(poly)) %dopar% { clip<-gIntersection(paths,poly[i,]) lgth<-gLength(clip) vid<[email protected][i,3] path.lgth[i,] <- c(vid,lgth) print(i) } 

и на этот раз функция gIntersection не найдена. Очевидно, что все пакеты установлены и загружены. После прочтения некоторых сообщений в форуме кажется, что это связано с тем, что функции выполняют / работают.

Кто-то может помочь? Я не программист!

Спасибо!

Обновить:

Я скорректировал свой код для предоставленного решения:

 results<-matrix(nrow=length(classes),ncol=length(files)) dimnames(results)[[1]]<-classes dimnames(results)[[2]]<-files ptime<-system.time({ foreach(z = 1:length(files),.packages="raster") %dopar% { raster <- raster(paste(folder,files[z],sep="")) data<-getValues(raster) clp <- na.omit(data) for(i in 1:length(classes)){ results[i,z]<-length(clp[clp==classes[i]])/length(clp) print(z) } } }) 

Но то, что я получаю, является результатом (моей матрицей результатов), заполненной na. Как вы можете видеть, я создаю объект матрицы, называемый результатами для заполнения результатами (который работает с циклами), но после прочтения документации для foreach кажется, что вы сохраняете свои результаты по-разному с помощью этой функции.

И советы о том, что я должен выбрать для аргумента .combine?

В виньетке foreach и справочной странице foreach аргумент .packages указывается при необходимости, чтобы обеспечить при использовании параллельных вычислений функции, которые не загружаются по умолчанию. Таким образом, ваш код в первом примере должен быть:

 ptime<-system.time({ r <- foreach(z = 1:length(files), .combine=cbind, .packages='raster') %dopar% { # some code # and more code } }) 

Еще несколько объяснений

Пакет foreach делает много настроек за кулисами. Что происходит, так это следующее (в принципе, технические детали немного сложнее):

  • foreach устанавливает систему «рабочих», которую вы можете видеть как отдельные сеансы R, каждая из которых привязана к другому ядру в кластере.

  • Функция, которая должна выполняться, загружается в каждый «рабочий» сеанс вместе с объектами, необходимыми для выполнения функции

  • каждый работник вычисляет результат для подмножества данных

  • Результаты расчета для разных работников объединяются и сообщаются в «мастер-R сеансе».

Поскольку рабочих можно рассматривать как отдельные сеансы R, пакеты с «мастер-сессии» не загружаются автоматически. Вы должны указать, какие пакеты должны быть загружены в эти рабочие сессии, и для этого .package аргумент .package foreach .


Обратите внимание, что при использовании других пакетов (например, parallel или snowfall ) вам необходимо будет настроить этих работников явно, а также позаботиться о передаче объектов и загрузке пакетов на рабочих сеансах.

  • Что делает функция invisible ()?
  • Удалите строки в R-матрице, где все данные NA
  • Как вы кодируете функцию R так, чтобы она «знала», чтобы искать «данные» для переменных в других аргументах?
  • Перекодирование переменных с помощью R
  • Найдите, сколько раз повторяющиеся строки повторяются в кадре данных R
  • Найти ближайшее значение в векторе с бинарным поиском
  • Добавить столбец с подсчетами другого
  • Вычислить разницу между значениями в последовательных строках по группам
  • Градиент из n цветов, начиная от цвета 1 и цвета 2
  • Как назначить значения динамическим именам переменных
  • Функция очистки консоли в R и RStudio
  • Давайте будем гением компьютера.