我正在进行汇总:
iris$group <- sample(1:2, 150, T)
aggregate(Sepal.Length ~ Species + group , data = iris, FUN = function(x) c(m = mean(x), n = length(x)))
现在我想用变量group
替换variable = "group"
,聚合应该与上面相同:
iris$group <- sample(1:2, 150, T)
variable = "group"
aggregate(Sepal.Length ~ Species + variable , data = iris, FUN = function(x) c(m = mean(x), n = length(x)))
然后发生错误。我尝试使用eval
并没有帮助。
答案 0 :(得分:5)
使用as.formula(sprintf("Sepal.Length ~ Species + `%s`", variable))
获取替换了一个字词的公式。
必须注意变量的输入是长度为1的字符向量。字符串模板中的反引号会阻止对variable = "factor(Sepal.Width)"
之类的表达式进行评估,如果希望这样做,可以省略。
如果将variable = ~...
作为参数也可以,您可以使用modelr::add_predictors(Sepal.Length ~ Species, variable)
来组合公式。