首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中将hdf5保存为txt或csv?

如何在R中将hdf5保存为txt或csv?
EN

Stack Overflow用户
提问于 2015-06-10 21:14:06
回答 1查看 1.7K关注 0票数 2

使用info here,我查看了hdf5文件的结构:

代码语言:javascript
复制
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" ...

一些细节:

代码语言:javascript
复制
> 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中使用数据帧。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-10 22:29:36

见下面的例子:

我从?h5write的文档中摘取了这个

首先,我制作了一个示例.h5来演示如何将它读取为data.frame:

代码语言:javascript
复制
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格式在我的磁盘上写入一个数组。

如果我这样做了:

代码语言:javascript
复制
> 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

代码语言:javascript
复制
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 )。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30767433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档