Tres formas de acceder a las variables de un data frame en lenguaje R

Un data frame es un objeto en R que representa una lista de variables que tienen la misma longitud y que han de estar identificadas por un nombre único. Se crean mediante la función data.frame y por la acción de ciertos comandos como read.table() al leer archivos de texto externos o a la acción, por ejemplo, de eigen sobre una matriz simétrica al determinar su array de autovalores y su matriz de autovectores. Si la acción de un comando carga un objeto en R al cual no se puede acceder individualmente a sus variables es probable que sea un data frame. Sin embargo, algunos comandos también producen objetos que no son data frame y es necesario hacer la transformación (qué sentido tendría en un SIG si no se produce una lista de variables que tengan la misma longitud y que han de estar identificadas por un nombre único?).

Para probar las tres formas de acceso se va a considerar la siguiente matriz simétrica:

1 2 3
2 1 4
3 4 1

que se cargará como un objeto en el intérprete y sobre la cual se va a producir un data frame mediante la acción de eigen(). El proceso completo es:

> a<-scan()
1: 1 2 3 2 1 4 3 4 1
10: 
Read 9 items
> dim(a)<- c(3,3)
> a
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    1    4
[3,]    3    4    1
> b<- eigen(a)
> b
$values
[1]  7.074674 -0.886791 -3.187883

$vectors
           [,1]       [,2]       [,3]
[1,] -0.5057852  0.8240377 -0.2552315
[2,] -0.5843738 -0.5449251 -0.6013018
[3,] -0.6345775 -0.1549789  0.7571611

En la lista de variables (el signo identificador es el $) del data frame la primera es values (arreglo de autovalores) y la segunda es vectors (matriz de autovectores). La manera más expedita de acceder, por separado, a las variables del data frame es tal como se presenta a continuación:

> b$values
[1]  7.074674 -0.886791 -3.187883
> b$vectors
           [,1]       [,2]       [,3]
[1,] -0.5057852  0.8240377 -0.2552315
[2,] -0.5843738 -0.5449251 -0.6013018
[3,] -0.6345775 -0.1549789  0.7571611

La segunda manera, menos obvia, es con:

> b[[1]]
[1]  7.074674 -0.886791 -3.187883
> b[[2]]
           [,1]       [,2]       [,3]
[1,] -0.5057852  0.8240377 -0.2552315
[2,] -0.5843738 -0.5449251 -0.6013018
[3,] -0.6345775 -0.1549789  0.7571611

Finalmente, la tercera manera, un poco más larga, es produciendo un attach() del data frame para acceder directamente a las variables. El procedimiento [search() y ls() son comandos de comprobación] es el siguiente:

> attach(b)
> search()
 [1] ".GlobalEnv"        "b"                 "package:stats"    
 [4] "package:graphics"  "package:grDevices" "package:utils"    
 [7] "package:datasets"  "package:methods"   "Autoloads"        
[10] "package:base"     
> ls(b)
[1] "values"  "vectors"
> values
[1]  7.074674 -0.886791 -3.187883
> vectors
           [,1]       [,2]       [,3]
[1,] -0.5057852  0.8240377 -0.2552315
[2,] -0.5843738 -0.5449251 -0.6013018
[3,] -0.6345775 -0.1549789  0.7571611
> detach(b) #para ocultar nuevamente las variables
Esta entrada fue publicada en Lenguaje R, Software Libre. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s