我有一个数据对象集合(说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