Я использую функцию foreach()
в пакете foreach
R для параллельных вычислений. Помимо этой функции, я думаю, также необходимо использовать функцию registerDoMC()
в пакете doMC
.
Однако, когда я пишу свой файл DESCRIPTION
, раздел Imports
содержит doMC (>= 1.3.0), foreach (>= 1.4.1)
, но когда я запускаю свой код, появляется сообщение об ошибке: не удается найти функцию iter
. Таким образом, я также import
пакет iterators
.
Похоже, что все еще есть ошибка: функция mclapply()
должна использоваться foreach()
, и эта функция присутствует в оба пакете parallel
и multicore
. Я включаю оба пакета в раздел Imports
, но когда я запускаю search()
, появляются предупреждения:
Warning messages:
1: replacing previous import ‘mclapply’ when loading ‘parallel’
2: replacing previous import ‘mcparallel’ when loading ‘parallel’
3: replacing previous import ‘pvec’ when loading ‘parallel’
Это довольно странно: хотя я явно imports
устанавливаю оба пакета iterators
и multicore
, я все еще не могу использовать их функции после загрузки собственного пакета... Вместо этого я должен явно запустить:
library(iterators)
library(multicore)
чтобы использовать мою собственную функцию в моем пакете, который использует параллельные вычисления. Что-то не так в написании моего пакета? Большое спасибо!