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 に答える