我有一个数据框subdist.df,它包含子区域的数据。我试图根据数据框中的公共属性(DISTRICT
列)总结行的值。
以下代码行
hello2 <-aggregate(.~DISTRICT, subdist.df,sum)
但这个没有。
hello <-aggregate(noquote(paste0(".~","DISTRICT")), subdist.df,sum)
我无法理解为什么会这样。我需要在一个函数中使用它,其中DISTRICT
可以是来自用户的任何输入作为参数。
答案 0 :(得分:1)
以iris 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
相反,在as.formula
之前添加paste0
会起作用:
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