使用 attr 浏览复杂的 r 对象

navigating through complex r-objects with attr

我正在使用前向选择对素食主义者进行多元冗余分析。有一次我想提取简化模型中的重要术语以形成新模型的右侧。 我知道这些术语在函数输出中的位置,但我无法提取它们:

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 <- 粘贴(model.terms, collapse = " + ").

如何提取位于给定对象中的术语?

看起来它在第二个元素中,这给出了 "Management+Moisture"。这是正确的吗?

x <- as.character(obj$terminfo$terms[[2]])
x <- x[x!= "+"]
paste(x, collapse = "+")

terms(obj)将提取项,formula(obj)将提取公式,update()可用于更新排序结果对象。例如,可以使用 update().

更改公式