当我需要将多个函数按顺序应用于多列并按多列聚合并希望将结果绑定到数据框中时,我通常aggregate()
以以下方式使用:
# bogus functions
foo1 <- function(x){mean(x)*var(x)}
foo2 <- function(x){mean(x)/var(x)}
# for illustration purposes only
npk$block <- as.numeric(npk$block)
subdf <- aggregate(npk[,c("yield", "block")],
by = list(N = npk$N, P = npk$P),
FUN = function(x){c(col1 = foo1(x), col2 = foo2(x))})
通过使用以下方法可以在有序的数据框中获得结果:
df <- do.call(data.frame, subdf)
我do.call()
可以通过在这种情况下以某种方式使用smarter来避免调用,或者从一开始就aggregate()
使用另一个基本解决方案来缩短整个过程吗?R