Как извлечь только номер из именованного номера (без имени)?

Я ищу только значение коэффициента линейной модели B1 (newx), а не имя. Я просто хочу значение 0,5. Я не хочу имя "newx".

newx <- c(0.5,1.5.2.5)

newy <- c(2,3,4)

out <- lm(newy ~ newx)

out выглядит так:

Call:
lm(formula = newy ~ newx)

Coefficients:
(Intercept)         newx  
       1.5         1.0  

Я прибыл сюда. Но теперь я застрял.

out$coefficients["newx"]

newx 

1.0 

person Andre Mikulec    schedule 01.04.2013    source источник
comment
as.numeric работает. Может быть, это недорогой способ вытеснить номер?   -  person Andre Mikulec    schedule 01.04.2013
comment
Вы можете использовать порядковый номер newx (2) вместо имени, такого как out[[1]][[2]].   -  person Gürol Canbek    schedule 28.04.2018


Ответы (4)


Для одного элемента, подобного этому, используйте [[, а не [. Сравнивать:

coefficients(out)["newx"]
# newx 
#    1 

coefficients(out)[["newx"]]
# [1] 1

В более общем случае используйте unname():

unname(coefficients(out)[c("newx", "(Intercept)")])
# [1] 1.0 1.5

head(unname(mtcars))
#                     NA NA  NA  NA   NA    NA    NA NA NA NA NA
# Mazda RX4         21.0  6 160 110 3.90 2.620 16.46  0  1  4  4
# Mazda RX4 Wag     21.0  6 160 110 3.90 2.875 17.02  0  1  4  4
# Datsun 710        22.8  4 108  93 3.85 2.320 18.61  1  1  4  1
# Hornet 4 Drive    21.4  6 258 110 3.08 3.215 19.44  1  0  3  1
# Hornet Sportabout 18.7  8 360 175 3.15 3.440 17.02  0  0  3  2
# Valiant           18.1  6 225 105 2.76 3.460 20.22  1  0  3  1

## etc.
person Josh O'Brien    schedule 01.04.2013

Если вопрос об удалении имен, другой способ здесь

my_vec <- # some quantile function(returns named vector)
names(my_vec) <- NULL
my_vec
## [1] 1 2 3
person Pradeep Singh    schedule 01.02.2020

Другой способ — использовать пакет broom:

broom::tidy(out)$estimate[1]
#1.5
person AlexB    schedule 03.10.2020
comment
Немного перебор, не так ли? Не могли бы вы пролить свет на то, почему это решение более элегантно/эффективно, чем принятый ответ? Я спрашиваю из своего предельно честного невежества, а не из педантичных побуждений. - person Álvaro A. Gutiérrez-Vargas; 23.07.2021

Простой и довольно прямой способ сделать это

as.numeric(out$coefficients["newx"])
person Álvaro A. Gutiérrez-Vargas    schedule 23.07.2021