—————— Introducción a R - Bases ——————
“Herramientas de análisis cuantitativo y su aplicación en la conservación de la biodiversidad”
“Herramientas de análisis cuantitativo y su aplicación en la conservación de la biodiversidad”
Ecodiversa Tropical
1. Objetivos de Aprendizaje
Al final de este taller usted podrá saber cómo:
- Usar R como calculadora
- Identificar y usar varios tipos de datos (ej: numéricos, caracteres)
- Crear un objeto y asignar valores al objeto
- Identificar y crear estructuras de datos (ej: vectores, data frames, listas y matrices)
- Aplicar funciones básicas matemáticas y estadísticas
- Enteder qué son funciones y paquetes en R
- Saber utilizar las ayudas en R
2. Para empezar
¿Qué es R y RStudio?
R es un lenguaje y un ambiente para el análisis estadístico y la graficación.
RStudio es un Entorno de Desarrollo Integrado (Integrated Development Environment, IDE en inglés) que permite la integración de herramientes diseñadas para ser más productivos e interactivos en R.
R y RStudio son softwares de libre acceso (Open source) que puede ejecutar desde varias plataformas como: Windows, Mac y Linux.
Por favor cargue R y RStudio en su computador. Si tiene Windows usted necesitará instalar Rtools. Si usted tiene Mac, necesita instalar también Xtools del app store.
Explorando RStudio
R studio es una plataforma muy amigable para usar R.
Abra un nuevo R Script usando File > New File > R Script
Usted verá cuatro paneles como se muestran en la figura. Los paneles ofrecen una variedad de herramientas para facilitar el proceso de escribir, ejecutar y visualizar sus códigos y resultados.
Usted se familiarzará y conocerá la utilidad de cada de estos paneles a medida que avanza en estos tutoriales.
3. R como calculadora
Vamos a empezar a jugar un poco con R, como si fuera una calculadora básica. Para lo cual utilizaremos los siguientes operadores:
Operadores aritméticos
Operador | Descripción |
---|---|
+ | Adición |
- | Substracción |
* | Multiplicación |
/ | División |
^ o ** | Exponenciación |
Operaciones básicas
Por ejemplo escriba la expresion 3 + 2
en el primer panel y luego ejecute el código oprimiendo el botón Run
que se encuentra a la derecha del panel.
Puede utilzar también las teclas Ctrl y Enter
(en Mac: Apple y Enter
).
En cualquiera de los dos casos asegúrese de situarse en la línea o ilumunar las líneas que quiere ejecutar.
3 + 2
## [1] 5
En la consola podrá ver el resultado.
Unos ejemplos mas:
2^3
## [1] 8
7-9
## [1] -2
Usted puede hacer multiples cálculos usando punto y coma (‘;’) para separar los comandos. Como por ejemplo:
20 / 4; 14 - 8
## [1] 5
## [1] 6
Ejercicio
Ahora es su turno de practicar:
Ejercicio!
Practique combinando diferentes operadores.
¿Cual es la difererencia entre estas operaciones?
14 - 8 * 2
14 - 8) * 2 (
Tips!
El orden de las operaciones es importante, por ejemplo:
- Parentesis () es primero, después viene
- Exponentes,
- Multiplicación y división (de izquierda a derecha), y finalmente
- Adición y substracción (de izquierda a derecha)
4. Creando objetos en R
Información!
R es un programa orientado a objetos (object-oriented program en inglés). Esto quiere decir que casi todo en R es un objeto.
Un objeto en R es una estructura que posee unos atributos (tipo de datos) y unos métodos actuando en esos atributos.
Por ejemplo asignemos (usando estos dos símbolos juntos <-
) el valor 1
al objeto x
.
<- 1
x x
## [1] 1
Tips!
Este símbolo <-
(que lo llamaremos igual, es una combinanción entre el simbolo <
y guión en la mitad -
) será utilizado de ahora en adelante en R para asignar (igual) valores a los objetos.
El símbolo =
será utilizado en otro contexto: para los argumentos en funciones. Lo veremos más adelante.
Ahora bien, puede pensar en el objeto como una variable y asignarle un nombre, por ejemplo:
<- 12
mi_variable mi_variable
## [1] 12
Usted puede asignar al objeto no solo números sino tambien texto, como por ejemplo:
<- "Euglosa"
species_1 species_1
## [1] "Euglosa"
Ahora es su turno de practicar:
Ejercicio!
Recuerde poner el texto entre comillas. Intente este código y mire lo que pasa sin comillas.
#species_2 <- Bombus
#species_2
Ahora intente este código y mire lo que pasa si deja espacios en el nombre de la variable:
# mi variable2 <- 25
# mi variable2
¿Cuáles son los resultados?
5. Vectores
Ahora bien usted puede crear un objeto con varios elementos, los llamaremos vectores.
Utilizaremos la función c()
para concadenar tres valores separados por comas ,
.
Creemos una variable mis_numeros
con tres valores. Por ejemplo:
<- c(1,2,3)
mis_numeros mis_numeros
## [1] 1 2 3
Podriamos crear un vector con 50 números consecutivos. No es necesario escribir los 50 números. Aquí es donde R empieza a tener más sentido y desplegar su potencial.
Para eso podemos utlizar la siguiente expresion:
<- c(1:50)
mis_numeros2 mis_numeros2
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
## [36] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
En general usted puede crear vectores que tengan valores númericos, texto, factores o lógicos. Por ejemplo:
<- c("b", "a", "c", "ab", "b")
mis_letras mis_letras
## [1] "b" "a" "c" "ab" "b"
Utilicemos la función class()
para ver que tipo de datos tenemos en el objeto que creamos. Veremos mas adelante qué es una función, pero usted ya se puede darse cuenta de qué se trata.
class(mis_letras)
## [1] "character"
Ejercicio
Ahora es su turno de practicar:
Ejercicio!
Defina los objetos d y e con los numeros 8 y 7 usando comillas ""
<- "8" d
<- "9" e
Después sume los dos objetos d + e
¿Qué obtiene? y ¿Por qué?
Para pensar son 7 y 8 tipo numérico o carácter?
Esto nos lleva a ver en detalle los tipos de datos que usted podría utilizar en R.
6. Tipo de datos
A continuación presentaremos los tipos de datos más comunes que se manejan en R.
numeric
(en inglés) “numérico”, para valores numéricoscharacter
orstring
(en inglés) “caracteres”, para texto que incluye letras y otros símboloslogical
oBoolean
(en inglés) “lógicos”, VERDADERO/FALSO (TRUE
/FALSE
en inglés)factor
en inglés) “factores”, para variables categóricasmissing values
(NA
, “Not Available”. en inglés) para valores que no se encuentran disponibles.
Veamos unos ejemplos:
Numérico (numeric
)
<- 5
a a
## [1] 5
Usted puede utilizar la función class()
para visualizar el ‘modo’ del objeto.
class(a)
## [1] "numeric"
Veamos otro ejemplo:
con la función typeof()
usted puede ver el modo del valor numérico. Hay dos tipos en el modo numérico.: double
e integer
.
<- 7
b b
## [1] 7
¿Qué clase es?
class(b)
## [1] "numeric"
¿Qué tipo de valor númerico es?
typeof(b)
## [1] "double"
En este caso es double
. Todos los números reales se guardan en el formato de double
precisión.
Si usted quiere un número entero, puede utilizar la función as.integer()
, que asigna
al objecto b
el modo integer
al valor 9
.
<- as.integer(9)
c typeof(c)
## [1] "integer"
Veamos qué pasa con un decimal:
<- 10.2
s s
## [1] 10.2
¿Qué clase es?
class(s)
## [1] "numeric"
¿Qué tipo de valor númerico es?
typeof(s)
## [1] "double"
¿Qué pasa si asignamos el modo integer
a un decimal? Bueno, parece que perdemos precisión:
<- as.integer(40.25)
t t
## [1] 40
Carácter (Character
or string
)
Asignemos este texto Euglosa
a la variable:
<- "Euglosa"
d d
## [1] "Euglosa"
¿Qué clase es?
class(d)
## [1] "character"
Podemos guardar un texto más complejo, como por ejemplo:
<- "Bombus afinis"
especie_3 especie_3
## [1] "Bombus afinis"
¿Qué clase es?
class(especie_3)
## [1] "character"
Valores lógicos (logical
)
Los valores lógicos (logical
or Boolean en inglés) se presentan como verdadero of falso (TRUE
or FALSE
). Serán de mucha utilidad en la programación en R.
Por ejemplo, asignemos el valor FALSE
a la variable3
.
<- FALSE
variable3 variable3
## [1] FALSE
¿Qué clase es?
class(variable3)
## [1] "logical"
Pero más interesante es indagar la condición de una variable:
# Definamos una variable
<- 5 # Asignamos el valor a un objeto
variable4 # Presentamos el valor variable4
## [1] 5
¿Es el objeto mayor que 6?
> 6 variable4
## [1] FALSE
¿Es el obejto menor que 6?
< 6 variable4
## [1] TRUE
Tips!
Este símbolo #
se utilza en R para preceder comentarios en el código, pero no afecta la ejecución de las operaciones o funciones.
Es muy importante para documentar lo que usted hace con sus códigos. Puede utilizarlos como títulos de una sección o comentarios a cada línea. Por ejemplo:
# Definamos una variable
<- 45 # Asignamos el valor a un objeto
variable5 # Presentamos el valor variable5
## [1] 45
Factores (factor
)
Un factor es una variable categórica con un grupo conocido de valores, que llamaremos niveles. Los factores serán muy importantes en análisis estadísticos y modelamiento.
Por ejemplo, la cobertura vegetal en un mapa puede tener tres valores (bosques, pastos y urbana).
Contruyamos un objeto que contenga estos valores y sea un factor.
<- c("bosques", "pastos", "urbana")
cob_veg cob_veg
## [1] "bosques" "pastos" "urbana"
¿Qué clase es?
class(cob_veg)
## [1] "character"
Parece que el vector sigue siendo texto. Para que sea un factor tenermos que usar la función as.factor()
.
<- as.factor(c("bosques", "pastos", "urbana"))
cob_veg2 cob_veg2
## [1] bosques pastos urbana
## Levels: bosques pastos urbana
¿Qué clase es?
class(cob_veg2)
## [1] "factor"
Valores no disponibles (missing values
, NA
)
En sus tablas de datos provenientes de hojas de cálculo usted se va a encontrar con esta situación: celdas donde no hay valores. En general R lee esto como NA
(es decir un valor no disponible).
Por ejemplo, creemos un vector con nombres de generos de especies en donde el tercero no está disponible. Note que NA
no está con comillas (no es un caracter). R lo lee como un valor no disponible (NA
).
<- c("Euglosa", "Bombus", NA, "Apis")
mis_datos1 mis_datos1
## [1] "Euglosa" "Bombus" NA "Apis"
7. Estructura de datos
Ya vimos que un vector es una secuencia de elementos del mismo modo.
Por ejemplo:
<- c(2,4,6,8,10)
v1 v1
## [1] 2 4 6 8 10
Pero hay diferentes tipos de estructuras en los datos como: tablas, matrices y listas.
Tablas data frames
La más familiar para usted es una tabla, que en lenguaje de R se conoce como data frame
.
La podemos construir con base en vectores. Por ejemplo, utilicemos tres vectores con diferentes modos y creemos un tabla utilizando la función data.frame()
:
<- c("Euglosa", "Bombus", NA, "Apis")
species <- c(2.1, 3.0, 4, 2.8)
largo_abdomen <- c("Cali", "Sitio_1", "2", NA)
lugar
<- data.frame(species, lugar, largo_abdomen)
df df
## species lugar largo_abdomen
## 1 Euglosa Cali 2.1
## 2 Bombus Sitio_1 3.0
## 3 <NA> 2 4.0
## 4 Apis <NA> 2.8
El data.frame
que creamos es muy parecido a la estructura de una hoja de cálculo, es decir con filas y columnas.
Puede ver como el nombre de la variable que creamos se convierte en el encabezado de la columna (que es en si una variable).
En el “Taller de manipulación de datos” veremos más en detalle las propiedades de los dataframes
y cómo manejarlos.
Por ahora utilicemos la funcion str()
para ver la estructura del objeto df
; es decir el dataframe que creamos. Por favor tómese un tiempo para ver la información que contiene.
str(df)
## 'data.frame': 4 obs. of 3 variables:
## $ species : Factor w/ 3 levels "Apis","Bombus",..: 3 2 NA 1
## $ lugar : Factor w/ 3 levels "2","Cali","Sitio_1": 2 3 1 NA
## $ largo_abdomen: num 2.1 3 4 2.8
Matrices matrix
Una matriz es una colección de elementos del mismo modo organizado en una distribución rectangular de dos dimensiones.
Por ejemplo
<- c(2,4,6)
var_1 <- var_1 *10
var_2
<- cbind(var_1, var_2)
matrix_1 matrix_1
## var_1 var_2
## [1,] 2 20
## [2,] 4 40
## [3,] 6 60
Se parece mucho a un data frame, pero su etructura es un poco diferente. Veamos:
class(matrix_1)
## [1] "matrix"
str(matrix_1)
## num [1:3, 1:2] 2 4 6 20 40 60
## - attr(*, "dimnames")=List of 2
## ..$ : NULL
## ..$ : chr [1:2] "var_1" "var_2"
Utilicemos ahora la funcion matrix()
para crear una matriz.
<- matrix( # Función
my_matrix 1:6, # vector con elementos
nrow=2, # número de filas
ncol=3, # número de columnas
byrow = TRUE) # llenar la matriz usando filas (SI)
my_matrix
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
Ejercicio
Ahora es su turno de practicar:
Ejercicio!
Compare la estructura del data frame y la matriz.
¿Cual es la difererencia entre esta matriz y la anterior?
df
## species lugar largo_abdomen
## 1 Euglosa Cali 2.1
## 2 Bombus Sitio_1 3.0
## 3 <NA> 2 4.0
## 4 Apis <NA> 2.8
str(df)
## 'data.frame': 4 obs. of 3 variables:
## $ species : Factor w/ 3 levels "Apis","Bombus",..: 3 2 NA 1
## $ lugar : Factor w/ 3 levels "2","Cali","Sitio_1": 2 3 1 NA
## $ largo_abdomen: num 2.1 3 4 2.8
mi_matrix2
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
str(mi_matrix2)
## int [1:2, 1:3] 1 2 3 4 5 6
Lista list
La lista es un vector que contiene varios objetos, usted podra diferneciarlos por que estan entre dos parentesis cuadrados, es decir [[1]], [[2]], [[3]], en el ejemplo de abajo:
<- c("Euglosa", "Bombus", NA, "Apis")
species <- c(2.1, 3.0, 4, 2.8)
largo_abdomen <- c("Cali", "Sitio_1", "2", NA)
lugar
<- list(species, lugar, largo_abdomen)
mi_lista mi_lista
## [[1]]
## [1] "Euglosa" "Bombus" NA "Apis"
##
## [[2]]
## [1] "Cali" "Sitio_1" "2" NA
##
## [[3]]
## [1] 2.1 3.0 4.0 2.8
Veamos la estructura:
str(mi_lista)
## List of 3
## $ : chr [1:4] "Euglosa" "Bombus" NA "Apis"
## $ : chr [1:4] "Cali" "Sitio_1" "2" NA
## $ : num [1:4] 2.1 3 4 2.8
En resumen
En la tabla mostramos un pequeño resumen de las características de las estructuras de los datos:
Igual modo | Diferente modo | |
---|---|---|
1 dimensión | Vector | lista |
ej.: (2,3,4,5) | ej.: objeto 1: (2,3,4,5); objeto 2 (“A”, “B”, “C”) | |
2 dimensiones | Matriz | data frame |
8. Funciones
Ya hemos visto algunas funciones como c()
, class()
, list()
, str()
, etc. Pero no hemos definido que es una función.
Información!
Una función es una serie de códigos autónomos que realizan una tarea específica.
Las funciones pueden tomar cualquier estructura de datos (ej: valor, vector, dataframe, etc.), los procesan y finalmente retornan un resultado.
R tiene funciones construídas en sus paquetes base que usted ha visto anteriormente.
Pero veamos otras como: sqrt()
, log()
y abs()
entre otras. Por ejemplo:
Raíz cuandrada
sqrt(25)
## [1] 5
Potencia
3^2
## [1] 9
Valor absoluto
abs(-43)
## [1] 43
Logaritmo natural
log(10)
## [1] 2.302585
Logaritmos, con diferentes bases
log10(20)
## [1] 1.30103
Tips!
R es sensitivo a mayúsculas y minúsculas, por eso Log(10)
no funcionaría. Puede intentarlo.
Obtendrá un mensaje de error como este:
Error in Log10() : could not find function “Log10”
No se preocupe, trate de entender que quiere decir el mensaje. A veces no son muy claros, es decir el problema está escrito en términos muy técnicos.
Pero puede buscar en el internet (copie y peque en su buscador el mensaje de error), hay muchas personas que han pasado por lo mismo y presentan la solución.
Funciones triginométricas: ej.: sin()
sin(10/2)
## [1] -0.9589243
Tips!
Recuerde entonces que usted puede escribir el nombre de la función seguido de parentesis redondo ()
.
Tenge en cuenta que todos los nombres de las funciones vienen en inlgés. Usted se familiarizará con los nombres a medida que las utilice.
Además, existe en R una ayuda cuando usted trata de encontralas:
Cuando usted empieza a escribir, R inicia una busqueda dentro de su base de datos de funciones con similar ortografía, de tal forma que usted puede seleccionar la función que desea. Usted puede ver una descripción de lo que hace la función. Tal como se ve en la figura:
Las funciones pueden ser muy útiles. Por ejemplo, veamos como la función round()
que le permite redondear a dos decimales la constante matemática π
.
round(pi, 2)
## [1] 3.14
Pero puede redondear al número menor utilizando floor()
:
floor(19.8)
## [1] 19
O redondear al número mayor utilizando ceiling()
:
ceiling(19.8)
## [1] 20
Ejercicio
Ahora es su turno de practicar:
Ejercicio!
Intente este codigo. ¿Qué sucede?
# sqrt("flor")
Practique, practique, practique!!
Obtendrá muchos mensajes con: Error No se precoupe!
Si no enntiende trate de nuevo y/o busque soluciones en el internet! Mucha gente ha pasado por los mismos problemas
Es un proceso de apredizaje que mejorará substancialmente si practica
9. Operadores lógicos
Los operadores lógicos serán de mucha utilidad para el análisis de datos y modelamiento.
Operador | Descripción |
---|---|
> | mayor que |
>= | mayor o igual que |
== | exactamente igual a |
!= | no igual a |
Por ejemplo: ¿es t1 mayor que t2?
<- 5
t1 <- 7
t2
<- t1 > t2
m m
## [1] FALSE
Por ejemplo: ¿es t1 menor que t2?
<- t1 < t2
n n
## [1] TRUE
10. Paquetes
Introducción
Hemos visto como una función realiza una tarea específica, utilizando los datos que usted provee y generando finalmente un resultado.
Ahora bien, veamos que es un paquete (package
en inglés) en R y su relación con las funciones:
Información!
Una paquete (package
) en R es una colección de funciones, datos y un códigos creado para una funcionalidad específica.
Por ejemplo, el paquete base
tiene un sinnúmero de funciones, algunas de las cuales ya hemos visto, como as.integer()
, as.factor()
, mean()
, etc.
Desde finales de los 90’s colaboradores alrededor del mundo y de diferentes disciplinas del conocimiento han generado más de 18,000 paquetes (CRAN project) en R .
Esta figura creada por dacorzig se muestra cómo ha crecido el número de paquetes que se han incluido en R a lo largo de estos años.
Fuente: dacorzig
Existen paquetes para diferentes propósitos, por ejemplo: cargar bases de datos, manipular datos, realizar análisis, modelamiento, simulaciones, crear gráficas y mapas, etc.
Por ejemplo:
ENMEval
: es un paquete para la implementación de modelos de distribición de especies.ape
: es un paquete para análisis filogenético y evolución.
Ahora bien, los desarrolladores de los paquetes han avanzado un poco más y han creado colecciones de paquetes dentro de una sola estructura. La idea es que todos los paquetes compartan una misma filosofía, gramática y estructura de datos.
El más popular es tydiverse
que le permite importar, ordenar, manipular, analizar y visualizar datos.
Estos paquetes los verá en detalle en el “Taller de Manejo de datos”.
Ahora veamos cómo puede instalar los paquetes en su computador y luego cargarlos en su sesión de RStudio.
Cómo Instalar paquetes
Para instalar un paquete, por ejemplo ggplot2
, usted puede utilizar el menu Tools >> Install Packages.
En la ventana que aparece puede empezar a digitar ggplot2
, seleccione el paquete y finalmente presione “Install”.
Puede también digitar en su sesión de Rstudioinstall.packages("ggplot2")
y ejecutar esta línea.
Cómo cargar paquetes
Una vez tiene sus paquetes instalados en su computador tiene que cargar el paquete en la sesión de RStudio, utilizando la función library()
, en este caso usted quiere cargar el paquete ggplot2
entonces usted escribiría:
library(ggplot2)
, y luego ejecute esta línea.
Una vez hecho todo esto, tendrá disponible el paquete en su sesión de RStudio.
Recuerde que la instalación la hace una sola vez, a no ser que quiera actualizar la versión del paquete.
Ahora bien, el paquete lo debe cargar cada vez que abre una sesión.
Puede ver la información relacionada con su sesión con esta función sessionInfo()
.
11. Ayudas disponibles
Aprender a escribir códigos que realicen las tareas que usted quiere es un proceso que requiere mucha práctica., especialmente cuando uste está empezando.
Es un proceso de ensayo y error. Los errores le ensenarán mucho a crecer en este proceso. Practique mucho!
Hay muchos recursos que puede utilizar en los cuales puede encontrar respuestas
Panel de ayuda
El primero es el panel de ayuda.
Puede digitar lo que necesita saber, por ejemplo algo sobre el paquete ggplot2
:
Lo que le ofrecerá algunos vínculos de utilidad.
Pero tambien puede utilizar la función help()
para buscar información sobre una función, por ejemplo mean()
:
Usted obtendrá en la ayuda información de como usar la función. La sección de ejemplos le puede dar claves para saber cómo escribir sus códigos.
Tips!
El panel de ayudas es de gran utilidad, pero a veces no es suficiente.
Entonces puede ir a la web a buscar ayuda. En especial cuando tiene un mensaje de “Error” en la ejecución de su código.
Copie y péguelo en el buscador y de seguro encontrará alguien que pasó por el mismo problema y encontró una solución..
Usted tambien puede buscar información sobre algunos operadores utilizando el símbolo de pregunta seguido del operador entre comillas:
">" ?
Ayuda en la web
¿Dónde hacer preguntas o encontrar respuestas?
Relacionadas con R:
Relacionadas con análisis estadístico:
Ecología y R:
Comunidad de usuarios.
Aunque no hay un soporte formal, sí se encuentra una comunidad muy fuerte de usuarios; además de herramientas y ayudas online que facilitan su uso.
R-Ladies Groups promueve la diversidad de genero dentro de la comunidad R.
- R Bloggers es una comunidad de usuarios de R.
- R Studio community es una comunidad que comparte información acerca de R Studio y temas relacionados con R.
Documentos.
También se encuentran una serie de libros y tutoriales que son de gran utilidad para el usuario, por ejemplo:
Otras herramientas.