1

给定 a data.frame,我想(动态)创建一个 formula 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])

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

4

1 回答 1

1

我们可以使用reformulate

reformulate(".", response = sprintf("`%s`", names(df)[1]))
于 2021-09-20T23:04:39.907 回答