将字符传递给公式

W W*_*W W 2 r

我正在进行聚合:

iris$group <- sample(1:2, 150, T)
aggregate(Sepal.Length ~ Species + group , data = iris, FUN = function(x) c(m = mean(x), n = length(x)))
Run Code Online (Sandbox Code Playgroud)

现在我想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)))
Run Code Online (Sandbox Code Playgroud)

但然后发生错误.我尝试过eval,它没有帮助.

Ale*_*exR 5

使用as.formula(sprintf("Sepal.Length ~ Species + `%s`", variable))得到替换成一个长期的公式.必须注意变量的输入是长度为1的字符向量.字符串模板中的反引号可以防止对表达式进行求值,variable = "factor(Sepal.Width)"如果希望这样做,则可以省略.

如果也可以variable = ~...作为参数,您可以使用modelr::add_predictors(Sepal.Length ~ Species, variable)组合公式.