Uso de scan() y read.table() en lenguaje R

Volviendo otra vez al lenguaje R me doy cuenta que algunas cosas han cambiado. Por ejemplo, la consideración de la sintaxis de algunos comandos en un artículo sobre la obtención de histogramas ya no son operativos. Esto es debido, posiblemente, a la incorporación de nuevas funcionalidades y cambios en el lenguaje que impiden que las instrucciones que allí están no se ejecuten en versiones más recientes de R (tengo la 2.14 en Ubuntu 12.04 con Wubi). Tratando de averiguar que sucedía llegué primero a la función scan() y luego a por qué ahora no funcionaban los comandos con los datos cargados con read.table().

La función scan() es una herramienta que permite asignar objetos por pantalla de una manera más expedita. Supongamos que tenemos la siguiente matriz simétrica:

1 2 3
2 1 4
3 4 1

para introducirla se hace, por ejemplo:

> a<-scan() <Enter>
1: 1 2 3 2 1 4 3 4 1 <Enter>
10: <Enter>
Read 9 items
> dim(a)<-c(3,3) <Enter>
> a <Enter>
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    1    4
[3,]    3    4    1

para tenerla a disposición en el intérprete.

Para cargar los datos de julio.in a partir de un archivo de texto mediante scan() es indiferente si están en formato de array o matricial. La función scan() hará el trabajo. Por ejemplo, la siguiente serie de comandos (julio.in tiene dispuesto los valores como un array):

> julio<-scan('julio.in') <Enter>
Read 476 items
> hist (julio, main="Histograma de la variable Julio", xlab="variable julio", ylab="Frecuencias", breaks=19, col="green", border="red") <Enter>

produce el siguiente histograma que es idéntico al de un artículo anterior:

histograma

Sin embargo, si se carga el mismo archivo julio.in con read.table() obtendremos un data frame, es decir, una lista de variables y el comando hist produciría un error con la “variable” julio. Para acceder a la lista de valores que nos interesa hay que trabajar un poco más. Con read.table(), por tanto:

> julio<-read.table('julio.in') <Enter>
> attach(julio) <Enter> #Hace visible el data frame
> search() <Enter>  #permite verificar la carga del data frame
 [1] ".GlobalEnv"        "julio"             "package:stats"    
 [4] "package:graphics"  "package:grDevices" "package:utils"    
 [7] "package:datasets"  "package:methods"   "Autoloads"        
[10] "package:base"     
> ls('julio') <Enter> #visualiza el nombre de la variable a la que fue asignado el arreglo
[1] "V1"
> hist (V1, main="Histograma de la variable Julio", xlab="variable julio", ylab="Frecuencias", breaks=19, col="green", border="red")  <Enter>

lo cual ahora si produce también el histograma de la imagen superior; pero la variable asignada en el data frame julio al arreglo de valores es V1.

Esta entrada fue publicada en Lenguaje R, Software Libre. Guarda el enlace permanente.

2 respuestas a Uso de scan() y read.table() en lenguaje R

  1. Pingback: Tres formas de acceder a las variables de un data frame en lenguaje R | El Blog de José Guerrero

  2. Ila Calderon dijo:

    Yo probe ubuntu y la verdad la version 8.04 me gusto mucho mas que el xp, por razones de compatibilidad en juegos me quede con windows aunque instale el wubi, aunque ahora solo el wubi instala la version 8.10 que tiene muchos errores para mi gusto. Salu2.Actualmente uso Windows7.

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