如何使用 paste 和 as.formula 生成复杂的公式?

How do I use paste and as.formula to generate a complex formula?

我试图在循环中使用 R 输入方程,所以我使用 as.formulapaste. 最终结果应该是:

library(nlme)
glm(Sepal.Length ~ Sepal.Width + Petal.Length +Petal.Width, 
  family = gaussian(),data=iris)

无论这是否是正确的模型,请不要担心,这只是一个例子。我将这些变量分成 3 个部分

为什么这不起作用?

library(nlme)

glmi = glm(as.formula(paste("Sepal.Length ~ Sepal.Width+ ", 
           paste('Petal.Length +Petal.Width',
           paste(',', 'family = gaussian(),data=iris')))))

glm()formula参数只有这一点:

Sepal.Length ~ Sepal.Width + Petal.Length +Petal.Width

您的原始代码 - family = gaussian(), data=iris 是不同的 glm() 个参数,不属于其中。

根据你所拥有的,类似

glm(
  as.formula(paste("Sepal.Length ~ Sepal.Width+ ", paste('Petal.Length +Petal.Width'))),
  family = gaussian(),
  data=iris
)

似乎与您正在尝试的相同。

我把不必要的第二个 paste() 留在了那里,因为它可能对应于您为问题简化的更复杂的逻辑。