Indice
Contents
Manejo de Archivos
Debian
El sistema que se usará para este tutorial es un sistema Debian, que es a su vez una distribución de Linux.
En la pantalla de arranque aparece dos íconos; uno de un computador con el título Computer, y uno de una carpeta con el título user's Home, estos dos íconos son links al File Browser Nautilus, que le ayuda a hacer operaciones con sus archivos.
Alternativamente, usaremos la terminal como en el tutorial principal para el manejo de archivos, usando los comandos del sistema linux en general.
Comandos
ls
List files, El primer comando que usaremos es ls, que lista los archivos en la carpeta en dónde estamos situados.
Ingrese a terminal: Applications -> Accessories -> Terminal, e ingrese ls:
user:~$ ls Desktop dat
Muestra las carpetas root, y data, en data colocaremos nuestros archivos estadísticos, estas mismas carpetas las verá en user's Home.
pwd
'Present Work Directory', es el directorio en dónde estamos actualmente parados:
user:~$ pwd /home/user
cd
Change directory, cambia a un directorio.
user:~$ cd root user:~/root$ pwd /home/user/root
Como se ve en el ejemplo anterior cambió al directorio /home/user/root, el símbolo ~, es sinónimo del directorio /home/user. Los dos puntos seguidos sirven para devolvernos un directorio en la jerarquía de directorios, los cuatro siguientes ejemplos tienen el mismo efecto:
user:~/root$ cd .. user:~/$ cd dat user:~/dat$ o más fácil: user:~/root$ cd ../dat user:~/dat$ Estos dos ejemplos son equivalentes a: user:~/root$ cd ~/dat user:~/dat$ o user:~/root$cd /home/dat user:~/dat$
mkdir
Make Direcotory, Crea un directorio o carpeta. Ejemplo introduzca una memoria usb en su computador, estas memorias se instalan como directorios en el sistema en el direcotio /media, una vez sea reconocida liste el contenido de ese directorio así:
user:~/dat$ ls /media cdrom cdrom0 AlumMemoria
En esta oportunidad la memoria se llamará AlumMemoria, liste el contenido de dicha memoria:
user:~/dat$ ls /media Archivo1 Directorio1 basura1 basura2 mis_fotos
, el comando mkdir, crea un directorio o carpeta, que podemos usar para guardar nuestros datos, ejemplo cree un directorio en su memoria usb, lo puede hacer estando parado en el directorio actual, o pasándose a la memoria:
NOTA Puede usar la tecla tab, para autocompletar lo que vaya escribiendo, esto le ayudará a no cometer errores.
user:~/dat$ mkdir /media/AlumMemoria/dat o user:~/dat$ cd /media/AlumMemoria user:~/media/AlumMemoria$ mkdir dat para efectos del tutorial, regrese en este último caso al directorio dat así. user:~/media/AlumMemoria$ cd ~/dat user:~/dat$
cp
Copy, Copia un archivo a otro archivo o a otro directorio. Ejemplo en el directorio dat, hay dos archivos, uno de datos, y otro de columnas de datos generado con una hoja de cálculo, copie estos archivos a su memoria:
user:~/dat$ ls simple.csv trees91.csv w1.dat user:~/dat$ cp trees91.csv /media/AlumMemoria/dat user:~/dat$ cp w1.dat /media/AlumMemoria/dat/w2.dat
Lo que hace el primer cp, copia el archivo trees91.csv al directorio /media/AlumMemoria/dat, y el segundo copia el archivo w1.dat al archivo w2.dat que se ubicará en el directorio /media/AlumMemoria/dat
Edición de un archivo
Para editar un archivo, hay muchas formas de hacerlo, usando los programas de OpenOffice.org, pero hay que conocer un poco más de OpenOffice para hacerlo, y poder procesar dichos archivos en GNU R, por el momento introduciremos una herramienta muy sencilla que permite editar los archivos de datos, y de csv sin introducirles ningún formato típico de los programas de ofimática.
El programa que usaremos es el gedit, lo puede ubicar en Applications -> Accessories -> gedit Text Editor, o desde la línea de comandos simplemente con gedit seguido del archivo que vamos a editar, ejemplo:
user:~/dat$ gedit trees91.csv
(process:9771): Gtk-WARNING **: Locale not supported by C library.
Using the fallback 'C' locale.Estos nos abrirá una pantalla con el archivo trees91.csv listo para ser editado, la línea de comandos permanecerá bloqueada hasta que usted salga del gedit.
Edición de archivos csv con OpenOffice.org Calc
El OpenOffice.org Calc es una hoja de cálculo muy poderosa, que puede ser usada tanto para editar como para crear archivos .csv, edite el archivo trees91.csv:
user:~/dat$ openoffice.org trees91.csv user:~/dat$
A diferencia del gedit, OpenOffice.org permite seguir haciendo otras operaciones, y abre una ventana de importación de datos Text Import - [trees91.csv], si observa bien, en la parte inferior hay una muestra de cómo importará los dato, y se vé que cada fila está en una sola casilla, hay que selecionar en Separator options -> Separated by la casilla Comma, luego presione el botón Ok.
Para guardar en formato csv, en OpenOffice, en el menú principal en la opción File -> Save As..., aparecerá la ventana de diálogo para guardar como, seleccione el nombre y el tipo de archivo, no olvide poner el tipo en File type: Text CSV (.csv).
Manejo de archivos en GNU R
read
El comando para leer un archivo, ya sea una tabla una lista de datos o un archivo csv es read, ingrese a GNR R, y lea el archivo trees91.csv:
user:~/dat$ R R version 2.13.1 (2011-07-08) . . . Type 'q()' to quit R. > simple <- read.csv(file="simple.csv", header=TRUE, sep=","); >
help
Lo que acabamos de hacer es asignarle a una nueva variable que se llamará simple, los datos contenidos en el archivo simple.csv, read.csv es el procedimiento que lee un archivo csv, para más información del comando read puede referirse [3], allí encontrará toda la sintaxis del comando read, y sus variedades. También puede usar el mismo GNU R, para pedir ayuda así:
> help(read.csv)
Para salirse de la ayuda presione la tecla q.
Más de read
Intente leer sin asignar a la variable, sólo con:
> read.csv(file="simple.csv", header=TRUE, sep=",");
El parámetro file es el nombre del archivo que vamos a leer, y puede ingresarlo con la ruta que desea, el parámetro sep es el separador que está usando en el archivo csv, en este caso el separador es una coma, pero puede ser cualquiera, y el parámetro header si se pasa en TRUE indica que read leerá los encabezados de las columnas. Intente leer desde la memoria ejemplo:
> tree <- read.csv(file="/media/AlumMemoria/dat/trees91.csv", header=TRUE, sep=";");
Esto último leerá el archivo trees91.csv de la memoria usb a una variable llamada tree.
write
Si quiere grabar en un archivo el contenido de una variable, lo puede hacer con write:
> write.csv (tree, file="/media/AlumMemoria/dat/t.csv")
Es muy similar a read, pero en este caso él supone que va a gravar los encabezados, y que el separador es por defecto la coma.
Un poco sobre variables
Las variables en GNU R, son nombres, y se les asigan variables con el comando <-, como ya hemos visto, las variables tienen sus tipos de datos, no es lo mismo un dato numérico, que una cadena de caracteres, o que un vector o una matriz, pero en el momento de la asignación es que se define qué tipo de dato va a ser la variable. Los diferetes tipos de datos, tienen sus tratamientos diferentes, sus campos, y las operaciones en las que pueden participar, ejemplo:
Creemos un variable con el valor 3:
> A <- 3 > A [1] 3 >
Para imprimir el valor de una variable, sólo hay que escribirla y presionar el Enter, aparecerá el valor antecedido de un [1], como se vio en el ejemplo anterior. Además cuando hacemos una asignación, no se verá nada, pero internamente se guarda en memoria el espacio con el valor, el nombre de la variable y el tipo de la variable.
Tenga presente que GNU R es case sentive, o sea que mayúsculas y minúsculas son diferentes en todo, por tal la variable A fue la que definimos, y la variable a no existe:
> a Error: object 'b' not found >
Asignemos otra variable, pero en este caso va a ser de tipo Booleano, o sea verdadero o falso, quen en GNU R es TRUE O FALSE.
> TRUE -> B > B [1] TRUE > 4 -> C >
Es de resaltar aquí que no usamos la asignación <- sino en su lugar usamos -> e invertimos el valor y la variable, esto tiene el mismo efecto.
A y C son de tipo numérico, y se pueden operar entre ellos sin problema, así:
> A+C [1] 7 > A*C > A*C [1] 12 > A^C [1] 81 > A/C [1] 0.75 > D = A/C > D [1] 0.75
Si queremos podemos mezclar los tipos booleanos con los enteros, estos tomarían el valor de 1 para TRUE y 0 para FALSE, primero miremos un poco de las operaciones entre booleanos como tal:
> E<-FALSE > B & E [1] FALSE > B | E [1] TRUE > !B [1] FALSE >
Como se ve el símbolo & es el y lógico, y el símbolo | es el o lógico, la negación es el símbolo !.
Si hacemos operaciones con los valores de verdad y los números reales, como se sugirió anteriormente tendremos lo siguiente:
> B [1] 3 > A [1] TRUE > E [1] FALSE > B * A [1] 3 > B - A [1] -2 > A + E [1] 3 > A * E [1] 0 >
Vectores
En GNU R podemos tener vectores columnas y vectores filas, así:
> c(1,2,3,4) -> mivector > mivector [1] 1 2 3 4
Se puede concatenar dos vectores en la asignación así:
> x <- c(10.4, 5.6, 3.1, 6.4, 21.7) > y <- c(x, 0, x) > y [1] 10.4 5.6 3.1 6.4 21.7 0.0 10.4 5.6 3.1 6.4 21.7
> v <- 2*x + y + 1 La operacion de vectores con enteros es algo interesante, mire el valor de x si los multiplica por 2:
> x [1] 10.4 5.6 3.1 6.4 21.7 > 2*x [1] 20.8 11.2 6.2 12.8 43.4
Si observa, cada valor de x fue multiplicado por 2, ahora súmele 1:
> x [1] 10.4 5.6 3.1 6.4 21.7 > x + 1 [1] 11.4 6.6 4.1 7.4 22.7
Si observa, a cada valor de x se le sumó el valor 1.
Trate de predecir qué pasará con la siguiente operación, y luego hágalo en R:
> v <- 2*x + y + 1
Esta operación anterior genera un mensaje de advertencia, pues los valores de x y y son de diferente tamaño, pero GNU R permite hacer la operación. Imprima v, y observará el resultado.