我有一個數據對象集合(說x1
,x2
和)。迭代集合的子集
require(xts)
set.seed(1)
x1 <- xts(data.frame(replicate(6, sample(c(1:10), 10, rep = T))), Sys.Date() + 1:10)
x2 <- xts(data.frame(replicate(6, sample(c(1:10), 10, rep = T))), Sys.Date() + 1:10)
x3 <- xts(data.frame(replicate(6, sample(c(1:10), 10, rep = T))), Sys.Date() + 1:10)
它們都具有相同的列數。我希望找到這些集合的子集的統計彙總。我已經想出瞭如何做到這一點的情況下,我希望所有元素lapply
:我使用下面的功能colSummary
。
colSummary <- function(ff)
{
lapply(1:ncol(x1), function(X) apply(cbind(x1[,X], x2[,X], x3[,X]), 1, ff))
}
summary <- colSummary(`mean`)
names(summary) <- colnames(x1)
我希望能夠找到相同的摘要信息的子集 - 通過傳遞的參數,如varList1
或varList2 to
colSummary`。
varList1 <- c('x1', 'x3')
varList2 <- c('x2', 'x3')
我打關於與do.call
和嵌套lapply
但不能弄清楚如何改變colSummary
使得cbind(...)
被替換爲一個對象列表(如varList1
),我傳遞到函數的引用。
當我通過varList1
時,所需的函數將返回與以下函數相同的輸出。
colSummary^ <- function(ff)
{
lapply(1:ncol(x1), function(X) apply(cbind(x1[,X], x3[,X]), 1, ff))
}
而當在varList2
通過將返回相同的輸出作爲上述功能colSummary^
與apply(cbind(x2[,X], x3[,X])
在colSummary^
代替apply(cbind(x1[,X], x3[,X])
取代。
這可能嗎?
+1爲'sapply(...,簡化= F)'技巧,但我認爲我的含糊不清的問題已經讓你失望。我試圖將'apply(cbind(x1 [,X],x2 [,X],x3 [,X])''更改爲apply(cbind(x1 [,X],x3 [,X])'當我傳入'varList1'等等時,我編輯了一個問題來使這個更清晰。 – ricardo
好吧,我想我已經把它整理好了,看看編輯 – James
真棒,希望我會兩次讚賞你。 – ricardo