如何使用 R 将名称列表转换为 Dredge 的方程式

How to use R to convert a list of names into an equation for Dredge

我想自动将名称列表转换为回归方程,以便在 MuMIn 包中的 Dredge 命令中使用。

做这个:

[1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  "Species"  

进入这个:

globalmodel <- lm(Sepal.Length ~ Petal.Length + Petal.Width + Species, data = iris,na.action = "na.fail")

从理论上讲,似乎很简单——一堆 paste0。我所需要的只是一种将 'find-replace' 将 " " 转换为 + 的过程自动化的方法。

为什么这么疯狂?我不断将 variables/columns 添加到我的数据 table 中,然后需要更改疏浚方程。此外,这样做会为我提供一个疏浚片段,我可以将其交叉应用到许多不同的未来疏浚中。

您可以使用 reformulate 构造公式

reformulate(names(iris)[-1], names(iris)[1])
#Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width + Species

并在 lm

中使用它
lm(reformulate(names(iris)[-1],names(iris)[1]),data = iris, na.action = "na.fail")

我们可以使用 paste 应该会更快

lm(paste0(names(iris)[1], " ~ ", paste(names(iris)[-1],
      collapse= "+ ")), data = iris, na.action = "na.fail")