创建一个矩阵,其中包含列表

时间:2018-01-31 08:14:27

标签: r list matrix

如果我们有100个对象的列表:

List
[[1]]
  x       y      z 
 379.0    0.6    1.0 
 369.0    0.3    2.0

[[2]]
  x       y      z 
 359.0    6.2    4.0 
 379.0    4.6    1.0

[[3]]
  x       y      z 
 379.0    6.0    1.0 
 379.0    0.5    1.0
.
.
[[100]]

我如何使用" y"获得矩阵?每个对象的列表列的值(它们都具有相同的长度),获得类似的东西:

X:
y1     y2     y3        ...       y100
0.6    6.2    6.0 
0.3    4.6    0.5

1 个答案:

答案 0 :(得分:4)

尝试以下:

# example list
l <- list(cars[1:3, ], cars[4:6, ])
l
# [[1]]
#   speed dist
# 1     4    2
# 2     4   10
# 3     7    4
# 
# [[2]]
#   speed dist
# 4     7   22
# 5     8   16
# 6     9   10

子集第二列使用&#34; [&#34; 函数,然后绑定列:

do.call(cbind, lapply(l, "[", 2))
#   dist dist
# 1    2   22
# 2   10   16
# 3    4   10

或者是另一种类似的方法,我们转换为 data.frame ,而不是绑定列:

as.data.frame(lapply(l, "[", 2))
#   dist dist.1
# 1    2     22
# 2   10     16
# 3    4     10

注意:我们也可以使用列名进行子集化。在我的示例数据中,第二列名称为&#34; dist&#34; ,因此请使用&#34; dist&#34; 2 em>它应该也一样。