从xts对象列表的最后几行生成一个表

时间:2012-05-14 12:43:59

标签: r xts

我有一个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

列名的每个级别的列名都相同。

2 个答案:

答案 0 :(得分:2)

除了@ Henrik answer之外,您还可以使用lapplydo.calllast的组合:

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)))