0

我有以下代码片段可以正常工作,但如果 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 进程吐出零星的错误。

4

1 回答 1

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]]

于 2013-09-23T15:50:26.413 回答