【问题标题】:Convert list of tables to matrix将表格列表转换为矩阵
【发布时间】:2012-12-11 06:10:19
【问题描述】:

我有一个包含 270 个表的列表。每个表有 3 列 22 行,看起来像这样:

                1         2         3
lx      -0.206628 -0.148405 -0.159344    
ly       0.017395  0.043114  0.027263    
lz      -0.044009  0.005597 -0.016906
...

我需要将这些表中的每一个合并到一个巨大的 270x66 矩阵中,其中行是每个表,列是表列中的值。我试过使用lapplyas.matrixdata.matrix。是否有某种组合可以解决问题?还是我应该先将表格转换为向量,然后再转换为矩阵?我知道循环通常不被鼓励。

【问题讨论】:

    标签: r list matrix


    【解决方案1】:

    您可以使用unlist 创建一个向量,然后创建一个新矩阵:

    matrix(unlist(mylist), nrow = length(mylist), byrow = TRUE)
    

    一个例子:

    mylist <- rep(list(matrix(1:9, 3)), 3)
    matrix(unlist(mylist), nrow = length(mylist), byrow = TRUE)
    # 
    #       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
    # [1,]    1    2    3    4    5    6    7    8    9
    # [2,]    1    2    3    4    5    6    7    8    9
    # [3,]    1    2    3    4    5    6    7    8    9
    

    【讨论】:

    • 这给了我一个 22x810 双矩阵。我应该在里面加入一些论点吗?
    • 感谢您的示例。我有正确数量的行,但只有一列具有相同的值:Numeric,66。我是不是哪里出错了?
    【解决方案2】:

    我认为这也可以:

    #create a list like you discussed
    LIST <- lapply(1:270,  function(i) matrix(1:66, ncol =3))
    
    do.call(rbind, lapply(LIST, c))
    

    它的工作原理是lapplying 函数c 告诉matrix 变成vector。然后我们使用do.call递归rbind一起。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2019-04-23
      相关资源
      最近更新 更多