我正在素食中进行前向选择的多变量冗余分析。有一次,我想提取简化模型中的重要术语,以形成新模型的右侧。我知道这些术语在函数的输出中的位置,但我无法提取它们:
library(vegan)
data(dune)
data(dune.env)
mod0 <- rda(dune ~ 1, dune.env) # Model with intercept only
mod1 <- rda(dune ~ ., dune.env) # Model with all explanatory variables
obj <- ordistep(mod0, scope = formula(mod1))
重要的模型变量如下:
obj$terminfo$terms ## or obj$terms
# dune ~ Management + Moisture **<------ this i need**
# attr(,"variables")
# list(dune, Management, Moisture)
# attr(,"factors")
# Management Moisture
# dune 0 0
# Management 1 0
# Moisture 0 1
# attr(,"term.labels")
# [1] "Management" "Moisture" **<------ alternatively this**
# attr(,"order")
# [1] 1 1
# attr(,"intercept")
# [1] 1
# attr(,"response")
# [1] 1
# attr(,".Environment")
# <environment: R_GlobalEnv
我用$,[[]],attr
/ which
和[]尝试了不同的方法,但都失败了。最后,我想创建一个向量:rhs
如何提取位于给定对象中的术语?
terms(obj)
将提取术语,formula(obj)
将提取公式,并且update()
可用于更新排序结果对象。例如,可以使用update()
更改公式。
看起来它在第二个元素,这给了"Management+Moisture"
。它是否正确?
x <- as.character(obj$terminfo$terms[[2]])
x <- x[x!= "+"]
paste(x, collapse = "+")