【发布时间】:2016-03-24 22:17:42
【问题描述】:
a 是一个包含列表的列表:
a<-list(list(matrix(c(0,0,0,1,2,1,2,2,2,1,1,1),3),
matrix(c(0,0,1,2,2,2,2,1),2)),
list(matrix(c(0,0,1,2,2,1,1,1,2,2,2,2),3)))
> a
[[1]]
[[1]][[1]]
[,1] [,2] [,3] [,4]
[1,] 0 1 2 1
[2,] 0 2 2 1
[3,] 0 1 2 1
[[1]][[2]]
[,1] [,2] [,3] [,4]
[1,] 0 1 2 2
[2,] 0 2 2 1
[[2]]
[[2]][[1]]
[,1] [,2] [,3] [,4]
[1,] 0 2 1 2
[2,] 0 2 1 2
[3,] 1 1 2 2
我想提取所有对象的第一列。我们知道如果列表是由矩阵组成的,我们可以使用“映射”函数来解决这个问题,但是现在列表是由列表组成的,我们不能只使用“映射”来解决这个问题,我该怎么办这么容易?
我使用以下代码来解决这个问题:
sapply(1:length(a), function(x) {Map(function(y) y[,1],a[[x]])})
可以解决,但是不知道有没有更方便的方法来解决这个问题,因为我以后需要根据这个问题做更多的工作。谢谢!
【问题讨论】:
-
@rawr 你让我遇到了“rapply”,谢谢!
-
@rawr - 这应该是真正的答案 - 它是通用且可扩展的