使用数据框列的名称创建公式

Create formula using the name of a data frame column

给定一个 data.frame,我想(动态地)创建一个公式 y ~ .,其中 ydata.frame 第一列的名称。

除了 as.formula(paste(names(df)[1], "~ .")) 的方法之外,更复杂的是列的名称可能是一个函数,例如:

names(model.frame(lm(I(Sepal.Length/Sepal.Width) ~ Species, data = iris)))[1]"I(Sepal.Length/Sepal.Width)"

所以我需要引用列名,即在上面的示例中我希望公式为 `I(Sepal.Length/Sepal.Width)` ~ ..

这个有效:

df <- model.frame(lm(I(Sepal.Length/Sepal.Width) ~ Species, data = iris))
fm <- . ~ .
fm[[2]] <- as.name(names(df)[1])

但是有一种巧妙的方法可以一步完成吗?

我们可以使用 reformulate

reformulate(".", response = sprintf("`%s`", names(df)[1]))