На моем первом наборе в foreach я получаю эту ошибку:
Error in function (handle) :
no function to return from, jumping to top level
Я получаю одно из них на каждого работника.
Я использую doMC / многоядерный сервер.
Сначала я подумал, что это вызвано текстовыми индикаторами выполнения, которые функция внутри моего вызова foreach пыталась отправить на консоль в качестве побочного эффекта, но я все равно получаю сообщение об ошибке после выключения. Несмотря на ошибки, оценка продолжается, и все хомяки, похоже, работают. Функция внутри оказывается
reclass () calc () из библиотеки (растр). Кто-нибудь может предположить, что это может значить? Я думал, что спрошу, пока я жду, чтобы увидеть, является ли вывод действительным.
Обновление
вот сердце кода:
foreach( cover= names( classes), .packages= "raster") %dopar% {
class <- classes[[ cover]]
calc( mlct$pri,
function( pri) {
ifelse( is.na( pri), NA,
ifelse( pri ==class, 1, 0))
},
filename= paste(
mlctName,
paste( cover, ".tif", sep=""),
sep="_"),
overwrite= TRUE, ...)
}
В случае незнакомства с library( raster)
он предоставляет умный механизм для взаимодействия с наборами геопространственных растровых данных без необходимости сохранять их в памяти. Функции читают и записывают данные блок за блоком, как они идут. В этом случае все рабочие читают из одних и тех же исходных данных, но записывают в отдельные выходные файлы. Интересно, имеет ли этот файловый ввод / вывод какое-либо отношение к (кажущимся доброкачественным) ошибкам, о которых говорилось выше.
Теперь он выплюнул все новые файлы, которые я ожидал, но это появляется на консоли:
GDAL Error 1: TIFFFetchDirectory:Sanity check on directory count failed, this is probably not a valid IFD offset
и приглашение интерпретатора не появляется, несмотря на то, что ядра работают тихо. Я полагаю, что еще один признак того, что файловый ввод-вывод ошибся, я думаю. Есть мысли?