Capítulo 1 El Programa R

1.1 Instalación de R y RStudio

1.2 Obtención de R

Dirigirse a la página web http://cran.r-project.org/ donde encontrarán el programa de instalación en Linux, (Mac) OS X y Windows. Seleccionar la opción deseada y descargar el ejecutable correspondiente.

1.3 Obtención de RStudio

RStudio se descarga gratuitamente de su página web: https://rstudio.com/products/rstudio/download/. Para un usuario, hay que elegir la versión Desktop. Se descargará un archivo ejecutable, aceptar las opciones que ofrece por defecto RStudio.

Si ya hemos instalado R en nuestro equipo, RStudio lo detectará automáticamente y podremos utilizarlo desde este entorno.

Si no instalamos RStudio antes que R, no hay problema, cada vez que iniciamos este programa, verificará la instalación de R.

1.4 Descargar el libro de lectura obligatoria

El libro de lectura obligatoria en español Ahumada(???) se puede descargar del siguiente link: https://cran.r-project.org/doc/contrib/rdebuts_es.pdf

1.5 ¿Qué es R?

  • Es parte del proyecto de software libre GNU (General Public Licence, www.gnu.org): absolutely no warranty.

  • El proyecto R comenz? en 1995 por un grupo de estadísticos de la universidad de Auckland, dirigidos por Ross Ihaka y Robert Gentleman.

  • R está basado en el lenguaje de programación S, diseñado específicamente para la programación de tareas estadísticas en los años 80 por los Laboratorios Bell AT&T. El lenguaje S se considera un lenguaje de programación estadística orientado a objetos de alto nivel.

  • Frente a otros lenguajes de programación, R es sencillo, intuitivo y eficiente ya que se trata de un lenguaje interpretado (a diferencia de otros como Fortran, C++, Visual Basic, etc.).

  • Como programa de análisis estadístico, R-base permite realizar tareas estadísticas habituales (análisis descriptivos, cálculo de probabilidades, inferencia estadística básica, etc.). Además permite extensiones que implementan técnicas estadísticas avanzadas, de modo que cubre las necesidades de cualquier analista, tanto en el ámbito de la estadística profesional como en el de la investigación estadística.

  • R consta de un sistema base que se extiende incorporando distintos packages adicionales (ver listado actual en http://cran.es.r-project.org/).


1.6 Entorno de trabajo de RStudio.

En este curso trabajaremos con la interfaz de RStudio, si abrimos RStudio vamos a ver algo parecido a lo que se muestra en la siguiente imagen:

1.7 Objetos en R

R pone los datos en unas estructuras especializadas llamadas objetos, que pueden ser referidos como símbolos o variables. Los nombres de los archivos deben ser autoexplicativos, es decir, que deben indicar que hacen.

1.8 Nombres de los Objetos

Los objetos en R pueden ser nombrados por palabras formadas por:

  • letras (mayúsculas, minusculas),
  • dígitos del 0 al 9 (pero no en posicion inicial)

No se permiten espacios en blanco entre palabras, para ello se utiliza guión o puntos.

Aquí algunos nombres de objetos recomendados:

ruben 
RUBEN123
las_variables_pueden_contener_guiones
las.variables.pueden.contener.puntos
Ruben_123.0

1.8.1 Palabras reservadas

Evitar utilizar estas palabras para nombrar objetos :

break <-1 # palabra reservada (no usar)
else <-2 # palabra reservada (no usar)
FALSE <-3 # palabra reservada (no usar)
for <-4 # palabra reservada (no usar)
function <-5 # palabra reservada (no usar)
if <-6 # palabra reservada (no usar)
in <-7 # palabra reservada (no usar)
Inf <-8 # palabra reservada (no usar)
NA <-9 # palabra reservada (no usar)
NaN <- 10 # palabra reservada (no usar)
next <- 11 # palabra reservada (no usar)
NULL <- 12 # palabra reservada (no usar)
repeat <- 13 # palabra reservada (no usar)
TRUE <- 14 # palabra reservada (no usar)
while <- 15 # palabra reservada (no usar)

1.9 Tipos de objetos

R es un lenguaje orientado a objetos. Variables, tablas, vectores, números, funciones, etc., todos son objetos, y cada clase de objeto tiene diferentes atributos que determinan la forma en que trabajan dentro de R. Algunas de las clases más comunes de objetos son: ‘integer’, ‘numeric’, ‘character’, ‘logical’, ‘matrix’, ‘data.frame’, ‘list’ y ‘function’.

  • Para el caso de números, ya sea un valor único o un vector con varios elementos, existen dos clases principales:
x <- 1:5
class(x) # "integer", n?meros enteros
## [1] "integer"
x <- x + 0.1
class(x) # "numeric", ya que ahora contiene decimales
## [1] "numeric"
  • Para el caso de cadenas o más comúnmente llamadas “strings”, la clase “character” es la que utiliza R para manejar este tipo de objetos. Al igual que en la mayoría de los lenguajes de programación, R utiliza las comillas dobles " o simples ’ para delimitar un string. Veamos un ejemplo rápido:
y <- LETTERS[1:10]
y
##  [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
  • Los objetos del tipo “logical” son resultado de operaciones lógicas, como comparaciones.
x <- 2 < 1:10
x
##  [1] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
  • Matrices: estas presentan 2 dimensiones, contiene datos del mismo tipo.
y <- matrix(1:20, 4, 5)
dim(y)
## [1] 4 5
  • Data Frame: Puede contener diferentes tipos de variables, normalmente la más utilizada.
datos <- head(iris)
datos
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

1.10 Operadores lógicos

Existen comparadores como que son muy importantes en R y se utilizan constantemente en diversas tareas: <, >, <=, >=, ==, !=.

3 > 2  
## [1] TRUE
3 < 2  
## [1] FALSE
3 == 2 
## [1] FALSE
5 == 5 
## [1] TRUE
5 != 5 
## [1] FALSE
  • Casos particulares: NA, NULL y NaN

Estos valores especiales no se pueden usar con estos comparadores. Para identificarlos en cambio se usan las funciones is.xxx. Por ejemplo:

is.na(NA)     # TRUE
## [1] TRUE
is.na(6)      # FALSE
## [1] FALSE
9 == NA       # NA
## [1] NA
is.null(NULL) # TRUE
## [1] TRUE
is.nan(NaN)   # TRUE
## [1] TRUE
  • Nota:
  • NA : “Not Available”, no disponible.
  • NULL : objeto “vacío”
  • NaN : “Not a Number”, no es un número (ej.: log(-1), sqrt(-1))

En el caso de que las operaciones involucren vectores, los resultados dependerán de la entrada de la operación. Ej:

x <- -5:5
x < 2     # En este caso se compara cada elemento de 'x' con el valor 2.
##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
x == 2
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
y <- 5:-5
x == y    # Compara cada elemento del vector 'x' con el correspondiente de 'y'.
##  [1] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
x >= y[1] # Compara cada elemento de 'x' con el primer elemento del vector 'y'.
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE

Una vez que estamos en RStudio, podemos escribir y ejecutar las órdenes de varias formas: directamente en la consola, a través de un script (.R) ó también archivos tipo Rmarkdown (.Rmd).

1.10.1 Las Cuatro ventanas de RStudio

  • Ventana (Scripts): Esta ventana nos permite abrir diferenetes archivos, en esta parte vamos ir ejecutando los códigos que vamos tecleando línea a línea.

  • Ventana (Consola): Aquí aparecen los resultados al ejecutar los códigos que hemos creados.

  • Ventana (Entorno): En esta vantana observaremos todos los objetos que hay en la memoria agrupados bajo tres categorías. (Data), (Values) y (Functions), sus características e incluso editarlos .

  • Ventana (Plots y Files): En esta ventana se presentan los gráficos que se van generando durante el trabajo estad?stico. También tiene Files donde se puede observar el directorio actual de trabajo, la pestaña packages para obrservar los paquetes instalados, así como para instalar nuevos paquetes.

1.11 Inicio de una sesión en R

  • Creamos 5 números aleatorios de una normal (media= 5, sd = 2) con la función rnorm
rnorm(5, mean=5, sd=2)
## [1] 6.913294 8.781045 8.419351 6.286699 5.485936
  • Un resumen de la base de datos cars con la función summary.
summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00
  • Gráfico de 1000 numeros aleatorios de la distribucion normal estándar.
plot(rnorm(1000))

1.12 R como calculadora. Operaciones aritméticas básicas.

“#” indica el principio de un comentario.

2 + 3 # suma
## [1] 5
2 - 3 # resta
## [1] -1
2*3   # multiplicar
## [1] 6
2/3   # dividir
## [1] 0.6666667
2^3   # potencia
## [1] 8
2**3  # potencia
## [1] 8
6%%5  #Modulo o resto de una division
## [1] 1
14%/%3  #Cociente entero de una division
## [1] 4
exp(1) #exponencial
## [1] 2.718282
sqrt(2) # ra?z cuadrada
## [1] 1.414214
# Usar par?ntesis para agrupar, clasificar

(4^2) - (3*2) 
## [1] 10
#max; min; range; mean, sum, diff, cumsum, sd, quantile # otras

1.12.1 Redondeo de un número

x <- pi
round(x, 3)#round(a, d) Redondea a con d decimales
## [1] 3.142
ceiling(x)#ceiling(a) Menor entero mayor que a
## [1] 4
floor(x)#floor(a) Mayor entero menor que a
## [1] 3
trunc(x)#trunc(a) Elimina los decimales de (a) hacia 0
## [1] 3

1.12.2 Funciones matemáticas avanzadas

log(1) # logaritmo
## [1] 0
sin(1); cos(1); tan(1) # trigonométricas
## [1] 0.841471
## [1] 0.5403023
## [1] 1.557408
asin(1) #arco seno
## [1] 1.570796
#   Convertimos ángulos a   radianes    y   luego   calculamos  el  seno
sin(c(0,30,45,60,90)*pi/180)
## [1] 0.0000000 0.5000000 0.7071068 0.8660254 1.0000000
log(100)  #logaritmo neperiano   ln
## [1] 4.60517
log(100, base=3)
## [1] 4.191807
log10(100) # equivalente
## [1] 2
log(100, b=10)  # argumentos abreviados
## [1] 2
log(100, 10)  # argumentos por posición
## [1] 2
set.seed(2)
runif(10)
##  [1] 0.1848823 0.7023740 0.5733263 0.1680519 0.9438393 0.9434750 0.1291590
##  [8] 0.8334488 0.4680185 0.5499837
rnorm(20, mean = 5, sd= 3)
##  [1]  5.397261  7.123864  4.280906 10.953422  4.583639  6.252952  7.945258
##  [8]  3.821914  1.880993 10.346687 -1.933207  7.635814  5.107420  8.038486
## [15]  6.296795 11.272458  1.400223  9.768915 10.863955  5.014813

1.13 Ayuda dentro del programa

La ayuda de R proporciona informacion muy útil de como utilizar las funciones. La ayuda se encuentra disponible directamente para una función dada. Al llamar la ayuda aparece una ventana donde se puede observar la función y ejemplos de como aplicarlos. Ejemplos:

#?mean   #help("mean") o con help(mean)

#apropos("wilcox")  #Encuentre todo lo que haya sobre la cadena wilc.

#example(mean)

#demo(graphics) 

1.14 Instalación de paquetes adicionales

Para instalar el paquete en RStudio, seleccionamos en el menú principal Tools/Install Packages, y se muestra la siguiente ventana donde escribimos por ejemplo el nombre del paquete dplyr y pulsamos Install. También podemos escribir en el Editor de RStudio install.packages(‘dplyr’) y pulsamos Run

1.15 Directorio de trabajo

Todos nuestros datos y archivos de órdenes scripts relacionados con un asunto determinado deben estar colocados en un directorio específico, llamado directorio de trabajo, que debe ser conocido por RStudio y por R.

Mediante el men?: Session/Set Working Directory/Choose Directory y así aparece una ventana donde podemos elegir el directorio de trabajo, este procedimiento se debe realizar al inicio de cada sesión de trabajo.

Para verificar el directorio de trabajo actual se puede realizar con la función getwd().

En esta carpeta que se elige se guardarán los archivos, datos, funciones, gráficos, etc.