¿Cómo extraigo solo el número de un número con nombre (sin el nombre)?

84

Estoy buscando solo el valor del coeficiente del modelo lineal B1 (newx), no el nombre. Solo quiero el valor 0.5. No quiero el nombre "newx".

newx <- c(0.5,1.5.2.5)

newy <- c(2,3,4)

out <- lm(newy ~ newx)

out parece:

Call:
lm(formula = newy ~ newx)

Coefficients:
(Intercept)         newx  
       1.5         1.0  

Llegué aquí. Pero ahora estoy estancado.

out$coefficients["newx"]

newx 

1.0 
Andre Mikulec
fuente
8
as.numeric(out$coefficients["newx"])
Ben
as.numeric es funciona. ¿Quizás es una forma económica de forzar la salida de un número?
Andre Mikulec
1
Puede utilizar el número de índice de newx(2) en lugar del nombre como out[[1]][[2]].
Gürol Canbek

Respuestas:

110

Para un solo elemento como este, use en [[lugar de [. Comparar:

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

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

De manera más general, use 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.
Josh O'Brien
fuente
4

Si la pregunta es sobre la eliminación de nombres, aquí hay otra forma.

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

Otra forma sería usar el broompaquete:

broom::tidy(out)$estimate[1]
#1.5
AlexB
fuente