lapply和子集列

时间:2012-09-27 00:40:57

标签: r subset xts lapply

我想让使用lapply()的位更优雅......(即一个衬垫会很好),而不是之前必须设置一个函数。即是否有一个标准函数,我可以使用[,c(1:4)]或类似的东西......

所以要做一个可重复的例子......

x <- xts(matrix(rnorm(500*8),ncol=8),Sys.Date()-500:1)
x.m <- split(x,'months')

以下基本上只对从分割创建的列表的每个元素中取前4列,因此我必须创建一个执行此操作的函数但我希望它以某种方式更优雅...

ff <- function(xts.obj){xts.obj[,c(1:4)]}

g <- lapply(x.m, ff)

由于

2 个答案:

答案 0 :(得分:5)

[是一个函数

> args(xts:::`[.xts`)
function (x, i, j, drop = FALSE, which.i = FALSE, ...) 
NULL

所以,你可以使用它。这些都可以做到。

lapply(x.m, '[', , c(1:4))
lapply(x.m, '[', j=c(1:4))

答案 1 :(得分:2)

如果只是让你的额外功能浮出水面,你可以在lapply电话中使用匿名功能。

g <- lapply(x.m, FUN = function(x){x[, c(1:4]}