【问题标题】:Convert multiple elements of a list into a matrix R将列表的多个元素转换为矩阵 R
【发布时间】:2016-05-07 05:08:43
【问题描述】:

我有一个清单,例如:

    [[1]]
              [,1]
[1,] -1.775291e-04
[2,] -1.267184e-04
[3,] -1.573868e-03
[4,]  4.157234e-02
[5,] -4.864003e-02
[6,]  2.316697e-05

[[2]]
              [,1]
[1,] -0.0010882973
[2,]  0.0009780598
[3,]  0.0003006506
[4,]  0.1579244926
[5,]  0.1655930418
[6,] -0.0006471336

[[3]]
              [,1]
[1,]  2.861335e-03
[2,] -3.259585e-05
[3,]  3.377353e-03
[4,]  1.224368e-02
[5,]  6.205352e-02
[6,] -3.028701e-04

[[4]]
              [,1]
[1,]  0.0023484525
[2,] -0.0007958971
[3,]  0.0038275408
[4,] -0.1705923272
[5,] -0.0706761005
[6,] -0.0004604092

我想更改它,以便我有一个矩阵,其中每个列表都成为数据表的第一行,本质上我想转置列表的每个元素,然后将它们放在另一个之上我以后可以处理它们。

【问题讨论】:

  • 试试do.call(rbind,lapply(x,c))x 是您的列表。
  • 嘿,谢谢,太好了。如果你不介意,你能帮忙解释一下 lapply 函数中的“c”是什么吗?我不太清楚它是什么!
  • c 可能是 R 中最常用的函数,你应该知道。在这种情况下,其目的是将列表中的元素(矩阵对象)强制转换为向量,以便它们可以rbinded 在一起。
  • 除了 nicola 的准确描述外,您还可以通过在控制台中输入 ?c 来阅读有关 c() 的所有信息。

标签: r list matrix


【解决方案1】:

如果d 是您的列表:

d = list(matrix(rnorm(6), ncol = 1), matrix(rnorm(6), ncol = 1),matrix(rnorm(6), ncol = 1),matrix(rnorm(6), ncol = 1))

那就用这个吧:

t(sapply(d, c))

将产生一个 4x6 矩阵。

            [,1]       [,2]        [,3]       [,4]        [,5]       [,6]
[1,] -0.02910676 -0.8722619 -1.48340110 -1.9914850  0.80751174 -1.1062207
[2,] -0.38604263  0.6417695  0.02404823 -0.3484978 -1.03931644  1.0919702
[3,]  0.19229699  0.3389690  1.68451808  0.7688967  0.01010725 -0.3203104
[4,]  0.36910577 -0.4922259  0.81362335 -1.9770308  0.65197010  0.2063001

【讨论】:

    【解决方案2】:

    如果L 是列表,那么:

    t(simplify2array(L))
    

    没有使用任何包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2014-05-15
      • 2015-06-16
      • 2015-04-27
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多