【问题标题】:How do I use paste and as.formula to generate a complex formula?如何使用 paste 和 as.formula 生成复杂的公式?
【发布时间】:2020-02-09 11:33:05
【问题描述】:

我正在尝试在循环中使用 R 输入方程式,因此我使用 as.formulapaste. 最终结果应该是:

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

无论这是否是正确的模型,请不要担心,这只是一个示例。我将这些变量分解为 3 个组件

  • Sepal.Length 和 Sepal.Width 是 1 个组件
  • Petal.Length + Petal.Width 是 1 个分量
  • family = gaussian(),data=iris) 是另一个组件

为什么这不起作用?

library(nlme)

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

【问题讨论】:

  • glm(reformulate(c("Sepal.Width","Petal.Length","Petal.Width"),"Sepal.Length"),family=gaussian(),data = iris)

标签: r model paste


【解决方案1】:

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(),因为它可能对应于您为问题简化的更复杂的逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多