LA CONSOLA DE R

La consola de R es un entorno seguro donde el intérprete del lenguaje ejecuta todos los comandos que se entran en la línea de ejecución. Aquellos lectores que ya han experimentado con lenguajes interpretados modernos como el Python o el Ruby se sentirán relativamente cómodos dentro de la consola, de la misma forma que los que tengan experiencia en el uso de sistemas operativos Linux y/o Unix no tendrán mayor dificultad.

Aquellos que no han tenido experiencia utilizando un lenguaje introduciendo comandos directamente en la consola no deben preocuparse. La consola de R es un entorno relativamente seguro dentro en el cual es difícil causar mayor conmoción, y del cual es muy fácil salir si algo sale mal o deja de funcionar. Trabajar dentro de la consola es rápido, cómodo, y se presta mucho a la forma en la cual un científico toma notas y experimenta con creatividad en una pizarra o libro de apuntes.

Solicitando Ayuda Dentro de la Consola de R
Siempre que necesitemos ayuda con algún comando o función, hay dos formas muy sencillas de obtenerla. La primera es con el comando help(), introduciendo entre los paréntesis el comando del cual estamos buscando mayor información.

help(apply)

Apply Functions Over Array Margins

Description
Returns a vector or array or list of values obtained by applying a
function to margins of an array or matrix.

Usage
apply(X, MARGIN, FUN, …)
Arguments…
[TEXTO TRUNCADO POR MOTIVOS DE IMPRESION]

La segunda forma es utilizar el signo de preguntas ? seguido por el nombre de la función o comando a buscar información. Este método funciona igual que el anterior y debemos pensar en ? como una abreviación de help().

?plot

Generic X-Y Plotting

Description
Generic function for plotting of R objects. For more details
about the graphical parameter arguments, see par.

For simple scatter plots, plot.default will be used. However,
there are plot methods for many R objects, including functions,
data.frames, density objects, etc. Use methods(plot) and the
documentation for these.

Usage
plot(x, y, …)

Arguments
[TEXTO TRUNCADO POR MOTIVOS DE IMPRESION]

Otra forma de invocar ayuda sobre algún término clave es utilizar el comando apropos(). Dentro el paréntesis debe ir la palabra clave a buscar ya sea dentro de corchetes dobles o simples.

apropos("sum")

[1] ".colSums" ".rowSums"
[3] ".tryResumeInterrupt" "colSums"
[5] "contr.sum" "cumsum"
[7] "format.summaryDefault" "print.summary.table"
[9] "print.summary.warnings" "print.summaryDefault"
[11] "rowsum" "rowsum.data.frame"
[13] "rowsum.default" "rowSums"
[15] "sum" "summary"
[17] "Summary" "summary.aov"
[19] "summary.connection" "summary.data.frame"
[21] "Summary.data.frame" "summary.Date"
[23] "Summary.Date" "summary.default"
[25] "Summary.difftime" "summary.factor"
[27] "Summary.factor" "summary.glm"
[29] "summary.lm" "summary.manova"
[31] "summary.matrix" "Summary.numeric_version"
[33] "Summary.ordered" "summary.POSIXct"
[35] "Summary.POSIXct" "summary.POSIXlt"
[37] "Summary.POSIXlt" "summary.proc_time"
[39] "summary.srcfile" "summary.srcref"
[41] "summary.stepfun" "summary.table"
[43] "summary.warnings" "summaryRprof"

Algo muy interesante y propio de R es la funcion example() que devuelve ejemplos de cualquier función o comando del lenguaje. Es común que nos acordemos de la función a utilizar pero no exactamente la sintaxis para utilizarla.

example(summary)

summry> summary(attenu, digits = 4) #-> summary.data.frame(…), default precision

event mag station dist
Min. : 1.00 Min. :5.000 117 : 5 Min. : 0.50
1st Qu.: 9.00 1st Qu.:5.300 1028 : 4 1st Qu.: 11.32
Median :18.00 Median :6.100 113 : 4 Median : 23.40
Mean :14.74 Mean :6.084 112 : 3 Mean : 45.60
3rd Qu.:20.00 3rd Qu.:6.600 135 : 3 3rd Qu.: 47.55
Max. :23.00 Max. :7.700 (Other):147 Max. :370.00
NA's : 16

accel
Min. :0.00300
1st Qu.:0.04425
Median :0.11300
Mean :0.15422
3rd Qu.:0.21925
Max. :0.81000

summry> summary(attenu $ station, maxsum = 20) #-> summary.factor(…)
117 1028 113 112 135 475 1030 1083 1093
5 4 4 3 3 3 2 2 2
1095 111 116 1219 1299 130 1308 1377 1383
2 2 2 2 2 2 2 2 2

(Other) NA's
120 16

summry> lst <- unclass(attenu$station) > 20 # logical with NAs
summry> ## summary.default() for logicals -- different from *.factor:
summry> summary(lst)

Mode FALSE TRUE NA's
logical 28 138 16

summry> summary(as.factor(lst))
FALSE TRUE NA's
28 138 16

Algunos Conceptos del Lenguaje R
En el lenguaje R, los escalares, vectores, variables y juegos de datos son objetos que creamos. Dicha creación se hace asignando dicho objeto un nombre para identificarlo y un valor a través del operador de asignación <-.

valor_ph <- 9.1
tiempo_Y <- c(10, 1, 11, 16, 20)

tiempo_Y

[1] 10 1 11 16 20

Cada vez que necesitamos ejecutar una línea podemos dar entrada a la tecla ENTER. En el caso de querer escribir dos líneas juntas, se utiliza el punto y coma (carácter 😉 para anexarlas.

valor_ph <- 9.1
tiempo_Y <- c(10, 1, 11, 16, 20)

print(tiempo_Y); print(valor_ph)

[1] 10 1 11 16 20
[1] 9.1

El lenguaje R es susceptible al uso de mayúsculas y minúsculas. Por ejemplo, las siguientes dos variables son dos entidades separadas para R aunque se llamen igual.

sumatoria <- 100
SUMATORIA <- 200

print(sumatoria); print(SUMATORIA)
[1] 100
[1] 200

El Código Fuente
Cuando uno escribe un programa de cierta extensión, es común guardar el código de dicho programa en un archivo separado. Esto tiene muchas ventajas.

A lo largo del libro utilizaremos el término script para referirnos al listado de código fuente. Un script es un guión, y es común darle ese término a los listados de código fuente de lenguajes interpretados, en contraposición a los lenguajes compilados como el Java y el C++.

  • Es aburrido y tedioso pasar en limpio el programa cada vez que se quiere ejecutar.
  • Es poco probable que un programa se pueda completar en un día. Algunos scripts tardan semanas o meses en completarse, tienen miles de líneas, y son el resultado de varias personas trabajando en un problema en particular, cada una concentrada en una porción del mismo.
  • Algunos programas pueden modificarse ligeramente y aplicarse a problemas similares sin tener que escribir dicho script desde cero. Una solución particularmente inteligente de matrices puede aplicarse a cualquier problema con matrices y solo habrá que cambiar algunas cosas del algoritmo.

No se puede escribir el programa o script en la consola de R. Para hacerlo se requiere de un programa especial llamado editor de programas o de un ambiente de desarrollo.

  • Un editor de programas es un programa que nos ayuda a escribir código fuente. Estos programas existen desde el comienzo de la computación y hay múltiples opciones gratis en la web. La ventaja de un editor es la facilidad para escribir el código, ya que muchos cuentan con comando especiales de edición, sintaxis con color para facilitar seguir el texto, búsqueda de funciones, etc.
  • Un ambiente de desarrollo es más que un editor, ya que reemplaza las funciones de interprete y compilación típicas del lenguaje. A diferencia de los editores, que sirven para una amplia gama de lenguajes, los entornos se especializan en un lenguaje en particular.

En este sentido, RStudio es el entorno del lenguaje R más avanzado, contando con opciones para generar scripts, editar código, mantener control de versiones, etc. RStudio puede ser descargado de forma gratuita y mantiene actualizaciones prácticamente todos los meses. Recomendamos descargarlo y utilizarlo a lo largo del libro para facilitar el aprendizaje. Uno de los puntos más interesantes de utilizar RStudio es que el entorno reconocerá errores de ortografía en la mayoría de los comandos y funciones del lenguaje, a la vez que tiene menús de ayuda para auto-completar funciones.

Listado de Objetos
A medida que uno trabaja en la consola de R la creación de objetos y variables se irá acumulando. La forma que trabaja el motor interno de R es con la memoria del sistema. El lenguaje corre todo en memoria. Para el 90% de los casos esto es más que suficiente, sobre todo en sistemas con memorias superiores a los 8 gigabytes. Para el otro 10% de las investigaciones es importante saber cuantos objetos residen en memoria y como eliminar aquellos que ya no necesitamos.

La forma de listar objetos creados es con el comando ls().

# Crear algunos objetos
a <- 1:10
b <- c("bar", "foo", "zip")
c <- rnorm(100, 1, 2)

# Listar objetos
ls()

[1] "a" "b" "c" "lst" "sumatoria" "SUMATORIA"
[7] "tiempo_Y" "valor_ph"

Listar objetos no es solo útil a la hora de despejar espacio en memoria. Muchas veces se trabaja en consola y es posible borrar sin querer (generalmente al asignarle un nuevo valor) una variable importante. En el momento que exista la necesidad de eliminar algún objeto, esto se logra con el comando rm().

# Borrar objetos creados
rm(a, b, c)

Salir de la Consola de R
Para salir de la consola de R solo hay que teclear en la misma el comando q().