外部函数中的NA调用尝试在R中打开netcdf文件

时间:2014-03-06 19:31:14

标签: r netcdf

我正在使用带有R版3.0.2的库ncdf。我试图一遍又一遍地打开和关闭一些netcdfs(我可以解释为什么但这个问题不需要它)。

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)

任何人都知道发生了什么事吗?这个错误本质上似乎是随机的。关于外来函数调用的时间是可变的。我正在寻找解释或只是一个解决方法?

由于

1 个答案:

答案 0 :(得分:2)

我认为问题来自于我分析中上一步中相同文件的未关闭连接。我在Linux系统上运行它,因此我在使用

运行循环时跟踪打开的文件连接
watch ls -l /proc/${PID}/fd

连接打开和关闭都很好,但是我看到了之前分析中存在的一些旧连接。我关上了它们,一切都运行得很好!!!