我正在使用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的函数中或通过列表的方式,有没有办法实现这个想法?更新:因为我是新用户,无法回答自己的问题:
我的答案涉及到Nick的回答和Ista的评论。
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)))
}
transform()
或者summarize()
。summarize
的帮助页面中有一些很好的例子。 - Chase?colwise
(请参阅与ddply一起使用的示例)。 - Ista