lapply和子集列

h.l*_*l.m 2 r subset lapply xts

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

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

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

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

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

g <- lapply(x.m, ff)
Run Code Online (Sandbox Code Playgroud)

谢谢

GSe*_*See 5

[ 是一个功能

> args(xts:::`[.xts`)
function (x, i, j, drop = FALSE, which.i = FALSE, ...) 
NULL
Run Code Online (Sandbox Code Playgroud)

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

lapply(x.m, '[', , c(1:4))
lapply(x.m, '[', j=c(1:4))
Run Code Online (Sandbox Code Playgroud)