2012-01-20 20 views
5

Estoy usando R para calcular algunos resultados estadísticos básicos. Estoy usando la función quantile() para calcular cuantiles en una columna de marco de datos de la siguiente manera.¿Cómo recupero un valor numérico simple de un vector numérico con nombre en R?

> quantile(foobars[,1]) 
    0%  25%  50%  75% 100% 
189000 194975 219500 239950 1000000 

Deseo poder acceder individualmente a los cuantiles calculados. Sin embargo, parece que no puedo descubrir cómo hacerlo. Cuando compruebo la clase del resultado devuelto, es un numérico de 1 dimensión.

yo probamos este:

> q <- quantile(foobars[,1]) 
> q[3] 
    50% 
219500 

que parece devolver una tupla (nivel cuantil + número). Sólo estoy interesado en el número (219 500 en este caso.

¿En qué puedo acceder sólo el número en una variable simple (numérico)?

Respuesta

16

Usted está confundiendo la impresa representación del valor numérico con el . valor real en lo que se refiere a R, q contiene un vector numérico llamado:

> dat <- rnorm(100) 
> q <- quantile(dat) 
> q 
     0%  25%  50%  75%  100% 
-2.2853903 -0.5327520 -0.1177865 0.5182007 2.4825565 
> str(q) 
Named num [1:5] -2.285 -0.533 -0.118 0.518 2.483 
- attr(*, "names")= chr [1:5] "0%" "25%" "50%" "75%" ... 

significa que todos los bits "llamada" es que el vector tiene un atributo adjunto "names" que contiene los (en este caso) las etiquetas de cuantiles. R imprime estos para un nombre vector como se consideran útiles para tener en salida impresa si está presente. Pero, de ninguna manera alteran el hecho de que este es un vector numérico. Usted puede utilizar éstos en los cálculos como si ellos no tienen el atributo "names":

> q[3] + 10 
    50% 
9.882214 

Si los nombres que molestan, la función unname() existe para eliminarlos:

> q2 <- unname(q) 
> q2 
[1] -2.2853903 -0.5327520 -0.1177865 0.5182007 2.4825565 

Para completar, lo que debería probablemente agregue que puede extraer el "names" usando la función names(), que también tiene una versión de asignación ('names<-'()). Así pues, otra manera de eliminar los nombres de un vector es asignar NULL a los nombres de:

> q3 <- q 
> names(q3) 
[1] "0%" "25%" "50%" "75%" "100%" 
> names(q3) <- NULL 
> names(q3) 
NULL 
+1

'as.vector (q)' también eliminará los nombres – sam

Cuestiones relacionadas