使用attr导航复杂的r对象

问题描述 投票:0回答:2

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

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

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

r attr vegan
2个回答
3
投票

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


1
投票

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

x <- as.character(obj$terminfo$terms[[2]])
x <- x[x!= "+"]
paste(x, collapse = "+")
© www.soinside.com 2019 - 2024. All rights reserved.