навигация по сложным r-объектам с помощью attr - PullRequest
0 голосов
/ 22 октября 2018

Я выполняю многомерный анализ избыточности в строгом вегетарианстве с прямым выбором.В какой-то момент я хочу извлечь существенные термины в сокращенной модели, чтобы сформировать правую часть новой модели.Я знаю, где находятся эти термины в выходных данных функции, но я не могу их извлечь:

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, collapse = "+"). </p>

Как можно извлечь термины, расположенные в данном объекте?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

terms(obj) будет извлекать термины, formula(obj) будет извлекать формулу, а update() может использоваться для обновления объекта результата рукоположения.Например, формулу можно изменить с помощью update().

0 голосов
/ 22 октября 2018

выглядит как во втором элементе, это дает "Management+Moisture".Это правильно?

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