如何在尝试打开数据集之前测试HDF5文件中是否存在数据集?

时间:2013-09-23 14:44:38

标签: r hdf5

我有以下代码片段正常但如果hdf5文件中不存在数据集“Test”,则会产生不需要的错误,这实际上是一个有效的案例:

library(rhdf5)
test_data <- h5read('test.h5', 'Test')
if (exists('test_data')) {
   # then read the data
   df_test <- as.data.frame(t(test_data))
   # work with df_test 
}
如果数据集不存在,

和R会输出错误:

 Error in h5read('test.h5', 'Test') : 
   Object Test does not exist in this HDF5 file.
 Execution halted

我希望优雅地处理这个问题,而不会让R进程吐出偶发错误。

1 个答案:

答案 0 :(得分:3)

好的,我认为,根据您的意见,这就是您想要的行:

假设您已将文件名作为参数输入,所以:

nextfile<- 'test.h5'

tryCatch(test_data <- h5read(nextfile, 'Test'), error = function(e) { print(paste("'Test' dataset not found in ",nextfile)) })

然后你就会知道哪些文件失败了。 (可能您有一个类似的机制设置为将每个文件存储在不同的“test_data”或列表变量的元素test_data[[j]]