2

我希望使使用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)

谢谢

4

2 回答 2

6

[是一个函数

> 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))
于 2012-09-27T00:46:18.597 回答
2

lapply如果只是让额外的函数漂浮在你身边,你可以在调用中使用匿名函数。

g <- lapply(x.m, FUN = function(x){x[, c(1:4]}
于 2012-09-27T00:45:54.587 回答