我有一个6D矩阵(最终可能会变大)我想保存为 txt , csv 或 xcel 文件。我想这样做是因为输出对于控制台窗口来说太大了,我只是希望能够在分析数据之前快速查看数据。此外,我的主管不与R合作,所以如果我想让他查看我需要能够将其从R中导出的数据。
我想要的是能够看到数据,标题告诉我我所在的矩阵的哪一部分。即
,, 1,5,6,5
或者,可以将数据重新排列到表中,条件是数据集的每一行指定它所在的矩阵的哪个部分。每个矩阵的一个列。
到目前为止,我已尝试write.matrix
,write.csv
和write.big.matrix
但未成功。
我为write.big.matrix
收到的错误消息是:
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘write.big.matrix’ for signature ‘"array", "character"’
非常感谢你的帮助。
答案 0 :(得分:9)
建议:
让您的主管与R
使用ncdf
包编写一个NetCDF文件,该文件可以是多维的(通常用于4D的时空数据)
使用reshape2
包将数组转换为i,j,k,l,m,n,value
格式的数据框(其中i到n是维度索引,value是A[i,j,k,l,m,n]
的值。这是一个三维的例子:
α=阵列(样品(24),C(2,3,4))
a现在是一个3d数组:
> a
, , 1
[,1] [,2] [,3]
[1,] 23 21 20
[2,] 22 7 14
, , 2
[,1] [,2] [,3]
[1,] 11 9 5
[2,] 12 6 17
, , 3
[,1] [,2] [,3]
[1,] 16 3 24
[2,] 1 10 4
, , 4
[,1] [,2] [,3]
[1,] 2 19 8
[2,] 18 15 13
然后是一个单行:
> require(reshape2)
> melt(a)
Var1 Var2 Var3 value
1 1 1 1 23
2 2 1 1 22
3 1 2 1 21
4 2 2 1 7
5 1 3 1 20
6 2 3 1 14
7 1 1 2 11
...
17 1 3 3 24
18 2 3 3 4
19 1 1 4 2
20 2 1 4 18
21 1 2 4 19
22 2 2 4 15
23 1 3 4 8
24 2 3 4 13
获取您可以write.table
作为爱好Excel的主管的CSV文件的内容。
答案 1 :(得分:0)
我想你想要sink()
sink("file.txt")
array(data=1:1000,dim=c(2,5,2,5,2,5)) # your array here
## back to the console
sink(type = "message")
sink()
如果控制台输出大小有问题,只需使用options(max.print=...)
暂时更改它。