我有一个xts对象列表。我想获得一个data.frame,其中包含列表中每个级别的最后几行。
我的列表如下:
a <- xts(matrix(1:4,2),as.Date("2012-01-01")+0:1)
b <-list(a,a*5)
> b
[[1]]
[,1] [,2]
2012-01-01 1 3
2012-01-02 2 4
[[2]]
[,1] [,2]
2012-01-01 5 15
2012-01-02 10 20
我想得到:
[,1] [,2]
2 4
10 20
列名的每个级别的列名都相同。
答案 0 :(得分:2)
除了@ Henrik answer之外,您还可以使用lapply
,do.call
和last
的组合:
do.call(rbind,lapply(b,last))
答案 1 :(得分:1)
由于b
是一个列表,您可以使用任何*apply
家庭成员,例如:
vapply(b, "[", i = 2, rep(0,2))
如果b
中的对象具有不同的行数,则以下内容应起作用:
vapply(b, function(x) x[nrow(x),], rep(0,ncol(b[[1]])))
请注意,在第一个版本中,如果您的对象有更多列,或者您使用第二个示例中的结构,则必须调整2
中的rep(0,2)
。
请注意,您必须在结果上使用t
才能获得所需的格式:
t(vapply(b, "[", i = 2, rep(0,2)))