【问题标题】:How do I save variables from hdf5 file using strings as variable names?如何使用字符串作为变量名从 hdf5 文件中保存变量?
【发布时间】:2016-12-31 23:49:43
【问题描述】:

我有一个包含多个变量的 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)
}

我尝试了assign()、eval()、as.name(),它们都不起作用,但我无法将它们保存到另一个变量中。 但是,如果我输入 myvar=file$AGB_CO 它可以工作。如何实现?

【问题讨论】:

  • 为什么不使用 h5read("myfile.h5","/") ?
  • @user3507085 似乎也可以。我也用过h5dump,很好用。

标签: r matrix hdf5 hdf rhdf5


【解决方案1】:

我找到了两种解决方案。一种是使用上面提到的命令 h5read("myfile.h5","/"),否则 rhdf5 有一个特定的命令 h5dump,它将获取文件的所有内容并将其保存为变量,同时保持结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多