我已经在 linux 机器上成功安装了 hdf5 包。我现在希望循环读取大量 hdf5 文件中的数据并创建一个时间序列。每个 hdf5 文件对应不同的时间。在读入许多文件(刚刚超过 1000 个)后,R 说打开了太多文件。我想找到一种关闭它们的方法,以便循环可以继续。这是代码:
fdate <- "200605312355" # the first date for my test loop
fmax <- 1400
arr <- vector()
for (i in 1:fmax){
fname <- paste(fdate,"_.h5") # path of h5 file
fid <- hdf5load(fname) # fid = NULL
arr[i] <- somevariable$data_array[lon,lat]
# would like to close the file here
fdate <- newdate(fdate,60*5) # a function that increments the date by seconds.
}
hdf5 包包含函数 hdf5cleanup,看起来它可以清理东西,但它需要一个文件标识符。我上面代码中的 fid 返回 NULL。尝试插入文件名,即 hdf5cleanup(fname) 导致 R 中止。也许 hdf5load 应该关闭文件并失败。如果是这种情况,有没有办法通过发出 system() 命令或其他方式来关闭连接?
顺便说一句,showConnections() 什么也不返回,好吧,实际上只是标题名称“描述类模式文本 isopen 可以读取可以写入”。
简而言之,我的问题是:使用 hdf5load() 加载 R 中的 hdf5 文件后,如何关闭它的连接?