Primeros pasos con R
- R en línea de comando (la consola de R)
- La memoria de R (Named Storage), y la memoria de R entre diferentes sesiones
- Funciones de R
- Abrir ficheros y guardar resultados (texto/imágenes)
- Video: lectura de datos en R y manipulaciones básicas
R en línea de comando (la consola de R)
La consola de R se empieza haciendo click sobre el icono de R que el setup program de instalación (si es Microsoft Windows) habrá dejado en el escritorio.
En la consola de R el usuario puede teclear instrucciones directamente justo detrás del símbolo ´>´. Como ejemplo básico, usamos R a modo de calculadora y también para que imprima todos los números del 1 al 20:
[1] 42
> 12_12
[1] 24
> 1:20
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
La ventaja de interactuar con R mediante línea de comandos es que te da toda la flexibilidad del mundo. Si estuviéramos usando la interfaz gráfica conocida por R Commander (Rcmdr) estaríamos limitados a las funciones que vienen con la distribución de Rcmdr. Por lo tanto, si queremos programar algo que no ha hecho nadie antes, la única forma de hacerlo es a través de la línea de comandos en la consola de R o en una cómoda interfaz gráfica tipo RStudio.
(This video is hosted on YouTube)
Para salir de la consola de R en cualquier momento y por lo tanto finalizar la sesión:
Save workspace image? [y/n/c]:
El entorno R preguntará si queremos guardar el entorno de trabajo (workspace), que es el historial de todos los comandos que hemos usado en la sesión actual más las librerías (paquetes) de R externas que hayamos iniciado. Rara vez conviene guardar el workspace; si se desea guardar el trabajo que se ha hecho lo más recomendable es hacer una copia de todos los comandos que hemos ido utilizando.
La memoria de R (Named Storage), y la memoria de R entre diferentes sesiones
El workspace de R donde trabajamos tiene un sistema de asignación de memoria de tipo global (global environment), es decir que almacena todos los resultados que vamos computando, almacena todas las variables que vamos nombrando, y también recuerda todas las funciones externas que hemos instalado e iniciado. Todo ésto esta disponible durante toda la sesión de R, es decir, hasta que cerremos la sesión con el comando q() y le digamos que no queremos guardar una copia del workspace. Esto tiene una clara ventaja, pero también una desventaja que no es tan fácil de apreciar: si la memoria RAM de nuestro ordenador es limitada y hemos acabado un cálculo pesado y con muchos datos es recomendable cerrar la sesión y volver a abrirla para liberar memoria que podemos necesitar para otras tareas.
La función dump() nos permite guardar datos entre sesiones, sin tener que ocupar la memoria RAM con más datos que los que especifiquemos:
> dump ("a","a.R")
> q()
Save workspace image? [y/n/c]: n
.
.
.
(entramos en una nueva sesion:)
.
.
.
> source ("a.R")
> a
[1] "hola amigos"
Funciones de R
En R casi todo se hace ayudándose de funciones que o vienen con la distribución estándar de R, que se pueden instalar cómodamente a través de la línea de comandos, o también funciones que uno mismo puede programar (normalmente pequeñas funciones que escribimos según necesitamos para ejecutar cualquier otra función varias veces y con diferentes datos).
Para pedir documentación sobre una función determinada, como la que calcula la media aritmética, usamos help():
Si necesitamos ejemplos detallados (built-in examples):
mean> x <- c(0:10, 50)
mean> xm <- mean(x)
mean> c(xm, mean(x, trim = 0.10))
[1] 8.75 5.50
Luego, si no conocemos el nombre de la función que estamos buscando pero queremos saber si existe alguna función que haga algo determinado, podemos teclear esto:
Help files with alias or concept or title matching ‘optimization’ using
fuzzy matching:
boot::print.simplex Print Solution to Linear Programming Problem
Concepts: Optimization
boot::simplex Simplex Method for Linear
Programming Problems
Concepts: Optimization
boot::simplex.object Linear Programming Solution
Objects
Concepts: Optimization
stats::constrOptim Linearly Constrained
Optimization
Concepts: Optimization
stats::glm.control Auxiliary for Controlling
GLM Fitting
Concepts: Optimization
stats::nlm Non-Linear Minimization
Concepts: optimization, Optimization
stats::nlminb Optimization using PORT
routines
Concepts: Optimization
stats::optim General-purpose Optimization
Concepts: Optimization
stats::optimize One Dimensional Optimization
Concepts: Optimization
stats::uniroot One Dimensional Root (Zero)
Finding
Y para cuando estamos tan absolutamente perdidos que hasta hemos perdido la cuenta de las funciones externas a la distribución estándar de R que hemos instalado, help.start() abre un navegador de internet donde se puede consultar todos los paquetes que hay instalados en la máquina (localmente).
starting httpd help server ... done
If the browser launched by '/usr/bin/open' is already running, it is
*not* restarted, and you must switch to its window.
Otherwise, be patient ...
Para hacer esto mismo en línea de comandos:
> rownames(ip) <- NULL
> ip <- ip[is.na(ip$Priority),1:2,drop=FALSE]
> print(ip, row.names=FALSE)
Finalmente, RSiteSearch() hace una búsqueda en la lista de correo (mailing list) de R-help, entre otros sitios.
A search query has been submitted to http://search.r-project.org
The results page should open in your browser shortly
Abrir ficheros y guardar resultados (texto/imágenes)
La mayoría de los datasets son una o más columnas de datos (formato case-by-variable), como esta matriz de 3x4 que llamaremos datos.txt. La función read.table() es la llave universal para abrir ficheros de tipo texto:
_________
x y z
61 13 4
175 21 18
111 24 14
124 23 18
> tabla1
x y z
1 61 13 4
2 175 21 18
3 111 24 14
4 124 23 18
Nota: header=TRUE indica que el fichero tiene una cabecera, es decir, una fila que te indica los nombres de las columnas (x, y, z); sep='\t' indica que las columnas en el fichero de texto están separadas por tabs. La separación por tabs es el formato por defecto que asume read.table(), así que sólo se índica aquí para ilustrar la posibilidad de leer ficheros cuyas columnas estén separadas por espacios (sep=' ') o por puntos y comas (sep=';') o comas (sep=',').
Para guardar resultados de tipo texto y que no desaparezcan al cerrar la sesión de R, la función sink() vierte todo el output al fichero indicado desde el momento en que se invoca a la función sink(). En el siguiente ejemplo creamos un vector de 6 números, y el cálculo del valor medio se vierte a un fichero externo al entorno R llamado radiacion.media.txt:
> sink("radiacion.media.txt")
> mean(radiacion)
.
.
.
diegos-MacBook-Air:~ diego$ more radiacion.media.txt
[1] 43.66667
Si se desea anular la función sink(), ejecutar dev.off():
Finalmente para guardar todas las imágenes generadas durante una sesión, save.image() funciona igual que sink() y guardará todas las imágenes generadas a partir del momento en que se ejecute la función. Al igual que con sink(), la función dev.off() anula a save.image():
.
.
.
> dev.off() ## anula a sink() y los resultados vuelven a mostrarse en la pantalla
Video: lectura de datos en R y manipulaciones básicas
(This video is hosted on YouTube)