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

R 在尝试打开HDF5文件之前,如何测试该文件中是否存在数据集?,r,hdf5,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 } 我希望能够

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

好的,根据您的评论,我认为这是您想要的一行:

假设您已输入文件名作为参数,因此:

nextfile<- 'test.h5'

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

nextfile好的,根据您的评论,我认为这是您想要的行:

假设您已输入文件名作为参数,因此:

nextfile<- 'test.h5'

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

nextfile是否可以使用
trycatch
?我怀疑你困惑的部分原因是
h5read
是寻找
测试的函数,因此如果失败,在
测试数据创建之前就会发生。确实,使用trycatch优雅地解决了我的问题。你能提供一个基于trycatch的高质量答案吗?我会接受的?替换第一行的工作代码段是:
tryCatch(测试数据可能会使用
trycatch
?我怀疑您的困惑部分在于
h5read
是寻找
test
的函数,因此如果失败,在创建
test\u数据之前就会发生。确实,使用trycatch可以优雅地解决我的问题。您能否提供一个基于trycatch的高质量答案我会接受吗?替换第一行的工作代码段是:
tryCatch(test\u data