Короткий ответ - это ошибка в параллельных бэкэндах, таких как doSNOW
, doParallel
и doMPI
, но с тех пор она была исправлена.
Немного более длинный ответ заключается в том, что foreach
экспортирует функции для работников, используя специальную "экспортную" среду, а не глобальную среду. Раньше это вызывало проблемы для функций, которые были созданы в глобальной среде, потому что среда «экспорта» не входила в их область действия, даже если теперь они были определены в той же среде «экспорта». Таким образом, они не могли видеть никакие другие функции или переменные, определенные в среде «экспорта», такие как «Posdef» в вашем случае.
Бэкэнды doSNOW
, doParallel
и doMPI
теперь изменяют связанную среду с глобальной на «экспортную» для функций, экспортируемых через «.export», и, похоже, решили эти проблемы.