将多维矩阵保存到文件中

use*_*294 7 r matrix

我有一个6D矩阵(它可能最终变大),我想保存为txt,csvxcel文件.我想这样做是因为输出对于控制台窗口来说太大了,我只是希望能够在分析数​​据之前快速查看数据.此外,我的主管不使用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"’
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

Spa*_*man 9

建议:

  1. 让您的主管与R合作

  2. 使用该ncdf包编写一个NetCDF文件,该文件可以是多维的(通常用于4D的时空数据)

  3. 使用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
Run Code Online (Sandbox Code Playgroud)

它然后是一个单行:

> 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
Run Code Online (Sandbox Code Playgroud)

得到的东西,你可以write.table为您的Excel爱好主管CSV文件.

  • hdf5是另一种非常适合大型数值数据集的替代文件格式 (2认同)