2016-08-24 10 views
0

목록이나 매트릭스에 자동으로 저장하려는 여러 변수가있는 hdf5 파일이 있습니다.문자열을 변수 이름으로 사용하여 hdf5 파일의 변수를 저장하는 방법은 무엇입니까?

library(rhdf5) 
file = H5Fopen("myfile.h5") 
file 
HDF5 FILE 
     name/
    filename 

         name  otype dclass   dim 
0 AGB_CO     H5I_DATASET FLOAT 3   
1 AGB_CUT     H5I_DATASET FLOAT 17 x 11 x 1 
2 AGB_GROWTH    H5I_DATASET FLOAT 17 x 11 x 1 
3 AGB_MORT     H5I_DATASET FLOAT 17 x 11 x 1 
4 AGE      H5I_DATASET FLOAT 1   
5 AREA      H5I_DATASET FLOAT 1   
6 AREA_SI     H5I_DATASET FLOAT 1   
7 BALIVE     H5I_DATASET FLOAT 3   
8 BASAL_AREA_CUT   H5I_DATASET FLOAT 17 x 11 x 1 
9 BASAL_AREA_GROWTH  H5I_DATASET FLOAT 17 x 11 x 1 
10 BASAL_AREA_MORT   H5I_DATASET FLOAT 17 x 11 x 1 

h5info=h5ls("myfile.h5") 
names=h5info$name 
names 
[1] "AGB_CO"     "AGB_CUT"     "AGB_GROWTH"    "AGB_MORT"     
[5] "AGE"      "AREA"      "AREA_SI"     "BALIVE"     
[9] "BASAL_AREA_CUT"   "BASAL_AREA_GROWTH"  "BASAL_AREA_MORT"   "BA_CO"   

나는 지금은 메모리에 모든 변수를 저장하는 루프를 사용하고 싶습니다

file$AGB_CO 
[1] 0.04595303 0.02707645 0.03625819 

을 입력하여 파일의 모든 변수에 액세스 할 수 있습니다. 내가 시도

for (i in 1:names) { 
    vari=paste0("file$",names[i]) 
    assign(vari,NA) 
    *some list or matrix*=as.name(vari) 
} 

처럼 뭔가 할당(), 평가(), as.name(), 그들 중 누구도 작동하지 않습니다,하지만 난 또 다른 변수로 저장할 수 없습니다입니다. 그러나 myvar = file $ AGB_CO를 입력하면 작동합니다. 이것을 구현하는 방법?

+0

왜 h5read ("myfile.h5", "/")를 사용하지 않습니까? – user3507085

+0

@ user3507085 잘 작동하는 것 같습니다. 나는 또한 h5dump를 매우 유용하게 사용했다. –

답변

0

내가 찾은 두 가지 해결책이 있습니다. 하나는 위에서 언급 한 명령 h5read ("myfile.h5", "/")를 사용하는 것입니다. 그렇지 않으면 rhdf5에 파일의 내용을 가져 와서 구조를 유지하면서 변수에 저장하는 특정 명령 h5dump가 있습니다.