在我第一次涉足 foreach 时,我收到了这个错误:
Error in function (handle) :
no function to return from, jumping to top level
我为每个工人得到一个。
我正在使用 doMC/多核后端。
起初我认为这是由于我的 foreach 调用中的函数试图将其作为副作用发送到控制台的文本进度条引起的,但在关闭它后我仍然收到错误消息。尽管出现错误,评估仍在继续,所有仓鼠似乎都在运行。里面的函数恰好是library(raster) 中的
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)
它提供了一种与地理空间栅格数据集交互的巧妙机制,而无需将它们收集到内存中。这些函数在执行过程中逐块读取和写入数据。在这种情况下,工作人员都在读取相同的源数据,但写入单独的输出文件。我想知道这个文件 I/O 是否与上面报告的(看似良性的)错误有关。
现在它已经吐出了我预期的所有新文件,但这出现在控制台上:
GDAL Error 1: TIFFFetchDirectory:Sanity check on directory count failed, this is probably not a valid IFD offset
尽管核心是安静的,但解释器提示并没有再次出现。我猜是文件 I/O 以某种方式出错的另一个线索。有什么想法吗?