在R中尝试打开netcdf文件时出现了外部函数调用中的NAs。

3

我正在使用R版本3.0.2中的ncdf库。我试图反复打开和关闭一些netcdf文件(我可以解释为什么,但这不是这个问题所需要的)。

sapply(1:14000, function(whatever) {
    print(whatever)
      sapply(prediction.cdfs, function(cdf) {
        print(file.path(cdf.dir, cdf))
        nc = open.ncdf(file.path(cdf.dir, cdf))
        close.ncdf(nc)
      })
})

在反复打开和关闭之后,它最终会因为这个错误而失败:
[1] 3329                                                                                             

[1] "/opt/devel/cdfs/file_one.cdf"

[1] "/opt/devel/cdfs/file_two.cdf"

[1] "/opt/devel/cdfs/file_three.cdf"

[1] "/opt/devel/cdfs/file_four.cdf"

[1] "/opt/devel/cdfs/file_five.cdf"

Error in open.ncdf(file.path(cdf.dir, cdf)) : 
  NAs in foreign function call (arg 1)

有人知道发生了什么吗?这个错误似乎是随机的。它发出有关外部函数调用的警报时的时间是可变的。我正在寻找解释或者一个解决方法?

谢谢。


也许可以先设置 options(error=recover),然后运行代码,当错误将您带入浏览器时,请进行调试。 - Josh O'Brien
@JoshO'Brien 谢谢,我会看一下的。在循环外抛出错误后,我能够打开netcdf文件。这与恢复模式有什么不同吗? - Andrew Cassidy
我对处理netcdf文件的R包一无所知,因此无法给您提供太多有根据的指导。话虽如此,我会使用浏览器尝试查看错误消息中的“NAs”来自何处。 - Josh O'Brien
1个回答

2

我认为问题出在之前分析步骤中未关闭同一文件的连接。我正在Linux系统上运行此操作,因此我在循环运行时跟踪了打开的文件连接。

watch ls -l /proc/${PID}/fd

连接打开和关闭都很正常,但我看到一些旧的连接还留在那里,这是之前分析时遗留下来的。我关闭了它们,一切运行得非常好!!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接