Как избавиться от foreach l oop error с readWave ()? - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь запустить foreach l oop следующим образом:

foreach(i=1:n, .combine=c, .packages=c("parallel", "doParallel", "pracma", "oce", "ineq", "gsw", "seewave", "soundecology", "data.table", "openxlsx", "tuneR", "vegan")) %dopar% 
res[i,] <- indices(files[i])

Пользовательская функция indices() использует readWave() из пакета tuneR для чтения волновых файлов из папки и я oop через них. Каждый раз, когда я запускаю это, я получаю следующую ошибку:

Error in readWave(x) : Object 'i' not found

Проблема не возникает в for l oop. Я гуглил это, но никто, кажется, не имел этого. Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 07 февраля 2020

Спасибо @Roland за то, что указал мне правильное направление. Да, я пытался использовать foreach концептуально неправильным образом, идентичным тому, как работает for l oop. Я смог заставить его работать, изменив его так:

palpha <- foreach(i = 1:n, .combine = "rbind", .packages = p) %dopar% indices(files[i])

Позже я смог записать список, полученный из foreach, в мой res фрейм данных так:

res <- as.data.frame(palpha)
...