我有以下代码片段正常但如果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进程吐出偶发错误。
答案 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]]