2013-09-23 1 views
0

나는 사실 확인을 작동하지만 데이터 세트 "테스트"입니다 HDF5 파일에 존재하지 않는 경우 원치 않는 오류가 발생합니다 다음 코드 유효한 경우가있다 :데이터 세트를 열기 전에 HDF5 파일에 데이터 세트가 있는지 테스트하는 방법은 무엇입니까?

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 과정없이이를 처리하고 싶습니다.

자, 당신은 인자로 파일 이름을 입력 한 가정하자 :

nextfile<- 'test.h5' 

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

을 그럼 당신은

+1

아마도'trycatch'를 사용할 것인가? 나는 혼란 스러울 부분이'h5read'가 함수 'Test'를 찾고 있으므로 실패 할 경우'test_data'도 생성되기 전에 발생합니다. –

+0

실제로 trycatch를 사용하면 우아하게 내 OP를 해결할 수 있습니다. trycatch를 기반으로 좋은 품질의 답변을 제공해 주시겠습니까? 첫 번째 줄을 바꿀 코드 조각은 다음과 같습니다 :'tryCatch (test_data <- h5read ('test.h5', 'Test'), error = function (e) {print ("Test 'dataset not found" 'exists' 함수가 그 일을 할 것이기 때문에 나머지 코드는 그대로 남아 있습니다. –

답변

3

확인, 나는 이것이 당신이 원하는 라인입니다, 귀하의 의견에 따라, 생각 어떤 파일이 실패했는지 알 수 있습니다. (아마 당신은 다른 "test_data"또는리스트 변수의 요소 인 각각의 파일을 저장하기 위해 비슷한 메카니즘을 가지고있다. test_data[[j]]