使用attr

时间:2018-10-22 12:05:12

标签: r attr vegan

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

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 <-paste(model.terms,折叠=“ +”)。

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

看起来像在第二个元素中,得到"Management+Moisture"。这是正确的吗?

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