使用虹膜data.frame作爲一個例子:
aggregate(.~Species, iris, sum)
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 250.3 171.4 73.1 12.3
2 versicolor 296.8 138.5 213.0 66.3
3 virginica 329.4 148.7 277.6 101.3
以下paste0
不起作用,如noquote
僅在需要時通過aggregate
函數產生的表達式,而不是一個公式:
aggregate(noquote(paste0(".~","Species")), iris, sum)
Error in aggregate.data.frame(as.data.frame(x), ...) :
arguments must have same length
相反,在paste0
之前添加as.formula
會生效:
aggregate(as.formula(paste0(".~","Species")), iris, sum)
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 250.3 171.4 73.1 12.3
2 versicolor 296.8 138.5 213.0 66.3
3 virginica 329.4 148.7 277.6 101.3
請顯示一個小的可重複的例子和預期的輸出 – akrun
我會建議使用S3的方法data.frame而不是聚合的公式接口。有關虹膜的示例:'var < - 「Species」;集合(虹膜[setdiff(names(iris),var)],by = list(iris [[var]]),sum)' –