将字符传递给公式

时间:2017-11-09 09:25:07

标签: 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)))

现在我想用变量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并没有帮助。

1 个答案:

答案 0 :(得分:5)

使用as.formula(sprintf("Sepal.Length ~ Species + `%s`", variable))获取替换了一个字词的公式。 必须注意变量的输入是长度为1的字符向量。字符串模板中的反引号会阻止对variable = "factor(Sepal.Width)"之类的表达式进行评估,如果希望这样做,可以省略。

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