将多维矩阵保存到文件中

时间:2014-01-31 07:54:10

标签: r matrix

我有一个6D矩阵(最终可能会变大)我想保存为 txt csv xcel 文件。我想这样做是因为输出对于控制台窗口来说太大了,我只是希望能够在分析数​​据之前快速查看数据。此外,我的主管不与R合作,所以如果我想让他查看我需要能够将其从R中导出的数据。

我想要的是能够看到数据,标题告诉我我所在的矩阵的哪一部分。即

,, 1,5,6,5

或者,可以将数据重新排列到表中,条件是数据集的每一行指定它所在的矩阵的哪个部分。每个矩阵的一个列。

到目前为止,我已尝试write.matrixwrite.csvwrite.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"’

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:9)

建议:

  1. 让您的主管与R

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

  4. 使用reshape2包将数组转换为i,j,k,l,m,n,value格式的数据框(其中i到n是维度索引,value是A[i,j,k,l,m,n]的值。这是一个三维的例子:

      

    α=阵列(样品(24),C(2,3,4))

  5. 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=...)暂时更改它。