如何使用 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")
我想自动将名称列表转换为回归方程,以便在 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")