【发布时间】:2011-01-28 18:44:26
【问题描述】:
在我第一次尝试 foreach 时,我遇到了这个错误:
Error in function (handle) :
no function to return from, jumping to top level
我为每个工人得到一个。
我正在使用 doMC/多核后端。
起初我认为这是由于我的 foreach 调用中的函数试图将其发送到控制台的文本进度条造成的,但在关闭它后我仍然收到错误消息。尽管出现错误,评估仍在继续,所有仓鼠似乎都在运行。里面的函数恰好是
来自库(光栅)的重分类() 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 以某种方式出错的另一个线索。有什么想法吗?
【问题讨论】: