Я пытался заставить мой код работать параллельно на R, используя пакет doParallel с пакетом foreach. Я также использую пакет sf для манипулирования файлами shp. Я удостоверился, что весь мой код работал в цикле foreach, просто используя% do%, поэтому, если произошла ошибка, я мог бы лучше отследить ее. Мой код работал нормально, используя foreach и% do%, но при изменении do% dopar% R продолжал выдавать следующую ошибку:
Ошибка в {: задача 1 не выполнена - "не удалось найти функцию"st_geometry_type" "
Несмотря на то, что я четко использую require (sf) в верхней части скрипта R. Я сделал небольшую функцию, которая просто печатает «проверить», является ли утверждение истинным, для репликации ошибки.
require(sf)
require(doParallel)
doParallel::registerDoParallel(cores = 2)
testforeach <- function(sfObject)
{
foreach(i=1:10) %dopar% {
if (st_geometry_type(sfObject[i,]) == "LINESTRING")
{
print("check")
}
}
}
Когда я запускаю этот код, он выдает точно такую же ошибку:
Ошибка в {: задача 1 не выполнена - "не удалось найти функцию" st_geometry_type ""
Однако, когда я заменяю% dopar% на% do%, он выводит все ожидаемые сообщения "check",Это ошибка в R или я что-то упустил? Я попытался переустановить свои пакеты, но это не оказало никакого влияния, так как я продолжал получать ту же ошибку. Любая помощь будет принята с благодарностью.