3

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

列表的每个级别中的列名称都相同。

4

2 回答 2

2

除了@Henrik 的回答之外,您还可以使用lapplydo.call和的组合last

do.call(rbind,lapply(b,last))
于 2012-05-14T14:22:50.137 回答
1

作为b一个列表,您可以使用任何*apply家庭成员,例如:

vapply(b, "[", i = 2, rep(0,2))

如果中的对象b具有不同的行数,则以下内容应该有效:

vapply(b, function(x) x[nrow(x),], rep(0,ncol(b[[1]])))

请注意,在第一个版本中,如果您的对象有更多列,或者您使用第二个示例中的结构,您必须调整2in 。rep(0,2)

请注意,您必须使用t结果来获得所需的格式:

t(vapply(b, "[", i = 2, rep(0,2)))
于 2012-05-14T12:47:00.260 回答