次のように使用できますsetNames
。
blubb <- setNames(aggregate(dat$two ~ dat$one, ...), c("One", "Two"))
または、洗練された数式メソッドをバイパスして、次のような構文を使用できます。
blubb <- aggregate(list(One = dat$one), list(Two = dat$two), ...)
アップデート
この更新は、自分でソリューションを導き出すことを開始するのに役立つだけです。
のコードを調べるとstats:::aggregate.formula
、末尾に向かって次の行が表示されます。
if (is.matrix(mf[[1L]])) {
lhs <- as.data.frame(mf[[1L]])
names(lhs) <- as.character(m[[2L]][[2L]])[-1L]
aggregate.data.frame(lhs, mf[-1L], FUN = FUN, ...)
}
else aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...)
集計された変数に関数名を追加するだけの場合は、おそらく次のように変更できます。
if (is.matrix(mf[[1L]])) {
lhs <- as.data.frame(mf[[1L]])
names(lhs) <- as.character(m[[2L]][[2L]])[-1L]
myOut <- aggregate.data.frame(lhs, mf[-1L], FUN = FUN, ...)
colnames(myOut) <- c(names(mf[-1L]),
paste(names(lhs), deparse(substitute(FUN)), sep = "."))
}
else {
myOut <- aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...)
colnames(myOut) <- c(names(mf[-1L]),
paste(strsplit(gsub("cbind\\(|\\)|\\s", "",
names(mf[1L])), ",")[[1]],
deparse(substitute(FUN)), sep = "."))
}
myOut
これは基本的に をFUN
使用して入力された値を取得deparse(substitute(FUN))
するため、関数を変更してカスタム サフィックス、またはサフィックスのベクトルを受け入れることもできます。これはおそらくいくつかの作業で少し改善される可能性がありますが、私はそれを行うつもりはありません!
これは、この概念が適用された Gistであり、「myAgg」という名前の関数を作成しています。
結果の列名のみのサンプル出力を次に示します。
> names(myAgg(weight ~ feed, data = chickwts, mean))
[1] "feed" "weight.mean"
> names(myAgg(breaks ~ wool + tension, data = warpbreaks, sum))
[1] "wool" "tension" "breaks.sum"
> names(myAgg(weight ~ feed, data = chickwts, FUN = function(x) mean(x^2)))
[1] "feed" "weight.function(x) mean(x^2)"
集計された変数名のみが変更されることに注意してください。ただし、カスタム関数を使用すると、非常に奇妙な列名になることにも注意してください。