使用信息here我查看了hdf5文件的结构:
source("http://bioconductor.org/biocLite.R")
biocLite("rhdf5")
library(rhdf5)
> str(h5ls("C:/Users/durraniu/hd5_file"))
'data.frame': 400 obs. of 5 variables:
$ group : chr "/" "/data" "/data" "/data" ...
$ name : chr "data" "ACC_State" "ACC_State_Frames" "ACC_Voltage" ...
$ otype : Factor w/ 15 levels "H5I_FILE","H5I_GROUP",..: 2 5 5 5 5 5 5 5 5 5 ...
$ dclass: chr "" "INTEGER" "INTEGER" "FLOAT" ...
$ dim : chr "" "1 x 1" "1" "15869 x 1" ...
一些细节:
> head(h5ls("C:/Users/durraniu/hd5_file"))
group name otype dclass dim
0 / data H5I_GROUP
1 /data ACC_State H5I_DATASET INTEGER 1 x 1
2 /data ACC_State_Frames H5I_DATASET INTEGER 1
3 /data ACC_Voltage H5I_DATASET FLOAT 15869 x 1
4 /data CFS_Accelerator_Pedal_Position H5I_DATASET FLOAT 15869 x 1
5 /data CFS_Auto_Transmission_Mode H5I_DATASET INTEGER 28 x 1
> tail(h5ls("C:/Users/durraniu/hd5_file"))
group name otype dclass dim
394 /header numvalues H5I_DATASET INTEGER 246
395 /header rate H5I_DATASET INTEGER 246
396 /header type H5I_DATASET STRING 246
397 /header units H5I_DATASET STRING 246
398 /header varrateflag H5I_DATASET INTEGER 246
399 / info H5I_GROUP
我想探索和分析数据但不想使用hdf5格式。我可以将其转换为数据帧或一组不同的数据帧吗?我可以将这些数据保存为txt或csv文件吗?我很乐意在R中使用数据框。
答案 0 :(得分:0)
请参阅以下示例:
我从?h5write
:
首先,我制作一个示例.h5
来演示如何将其作为data.frame读取:
library(rhdf5)
h5createFile("ex_ls_dump.h5")
# create groups
h5createGroup("ex_ls_dump.h5","foo")
h5createGroup("ex_ls_dump.h5","foo/foobaa")
B = array(seq(0.1,2.0,by=0.1),dim=c(5,2,2))
attr(B, "scale") <- "liter"
h5write(B, "ex_ls_dump.h5","foo/B")
这会以.h5
格式在我的磁盘上写入一个数组。
如果我这样做:
> str(h5ls("ex_ls_dump.h5"))
'data.frame': 3 obs. of 5 variables:
$ group : chr "/" "/foo" "/foo"
$ name : chr "foo" "B" "foobaa"
$ otype : Factor w/ 15 levels "H5I_FILE","H5I_GROUP",..: 2 5 2
$ dclass: chr "" "FLOAT" ""
$ dim : chr "" "5 x 2 x 2" ""
我得到的是文件的内容而不是数据本身。它只包含有关该文件的信息。来自文档:
列出HDF5文件的内容。
现在,如果你想正常读取这个文件,即由于我的.h5
文件是一个数组,我想这样读它,你使用h5read
:
E = h5read("ex_ls_dump.h5","foo/B")
> E
, , 1
[,1] [,2]
[1,] 0.1 0.6
[2,] 0.2 0.7
[3,] 0.3 0.8
[4,] 0.4 0.9
[5,] 0.5 1.0
, , 2
[,1] [,2]
[1,] 1.1 1.6
[2,] 1.2 1.7
[3,] 1.3 1.8
[4,] 1.4 1.9
[5,] 1.5 2.0
> is.array(E)
[1] TRUE
因此,只需使用h5read
在R中读取您的文件,它将以与编写时相同的格式读取(在您的情况下可能是data.frame)。