Можно ли извлечь названия коэффициентов из $терминов?

#r

Вопрос:

У меня есть тестовая линейная модель:

 set.seed(93874)
test_x <- rnorm(1000)
test_y <- rnorm(1000)   test_x
model  <- lm(test_y ~ test_x)
 

с коэффициентами «перехват» и «тест_х»:

 model$coefficients
(Intercept)      test_x 
 0.04047742  0.98198305 
 

Использование команды model$terms дает довольно много данных

  > model$terms        
    test_y ~ test_x
        attr(,"variables")
        list(test_y, test_x)
        attr(,"factors")
               test_x
        test_y      0
        test_x      1
        attr(,"term.labels")
        [1] "test_x"
        attr(,"order")
        [1] 1
        attr(,"intercept")
        [1] 1
        attr(,"response")
        [1] 1
        attr(,".Environment")
        <environment: R_GlobalEnv>
        attr(,"predvars")
        list(test_y, test_x)
        attr(,"dataClasses")
           test_y    test_x 
        "numeric" "numeric" 
 

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

  rows <- c("test_x")
     cols <- c("Value")
    matrix_test <- matrix(c(1), nrow = 1, ncol = 1, byrow = TRUE, dimnames = list(rows, cols))
   > matrix_test 
          Value
    test_x     1
 

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

Комментарии:

1. Ты хочешь names(model$coefficients) ?

2. @RuiBarradas да! Это прекрасно работает. Если вы поставите это в качестве ответа, я отмечу это как решение.

Ответ №1:

Вы можете использовать

 names(model$coefficients)
[1] "(Intercept)" "test_x" 
 

Или эквивалентно

 > names(coef(model))
[1] "(Intercept)" "test_x"