我正在使用 ddply 来聚合和汇总数据框变量,并且我有兴趣遍历我的数据框列表以创建新变量。
new.data <- ddply(old.data,
c("factor", "factor2"),
function(df)
c(a11_a10 = CustomFunction(df$a11_a10),
a12_a11 = CustomFunction(df$a12_a11),
a13_a12 = CustomFunction(df$a13_a12),
...
...
...))
有没有办法让我在 ddply 中插入一个循环,这样我就可以避免写出每个新的汇总变量,例如
for (i in 11:n) {
paste("a", i, "_a", i - 1) = CustomFunction(..... )
}
我知道这不是它实际的完成方式,但我只是想展示我如何概念化它。有没有办法在我在 ddply 中调用的函数中或通过列表来执行此操作?
更新:因为我是新用户,所以我无法发布我自己的问题的答案:
我的回答涉及尼克的回答和伊斯塔的评论中的想法:
func <- function(old.data, min, max, gap) {
varrange <- min:max
usenames <- paste("a", varrange, "_a", varrange - gap, sep="")
new.data <- ddply(old.data,
.(factor, factor2),
colwise(CustomFunction, c(usenames)))
}