0

我想自动将名称列表转换为回归方程,以便在 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。我所需要的只是一种将“”变成+的“查找-替换”自动化的方法。

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

4

2 回答 2

2

你可以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")
于 2020-04-03T04:24:36.150 回答
0

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

lm(paste0(names(iris)[1], " ~ ", paste(names(iris)[-1],
      collapse= "+ ")), data = iris, na.action = "na.fail")
于 2020-04-03T19:21:45.397 回答