V <- 6
suma <- 2 + 2
Suma <- 3 + 4 + 6 + 6
V <- 25 / 5
4 Los objetos
Ya hemos visto anteriormente que en Environment están almacenados todos los objetos y las funciones de los paquetes que tenemos cargados. Pero también podemos crear nuestros propios objetos y funciones. Ahora mismo, si consultamos en Global Environment, veremos que está vacío.
Ahora crearemos objetos (dejaremos las funciones para un curso más avanzado).
4.1 Creación de objetos
Los objetos son un conjunto de datos que se almacenan en R con un nombre determinado. Para crear un objeto propio y almacenarlo en el Global Environment, necesitaremos el símbolo <-
1. En la izquierda del símbolo escribiremos el nombre que adoptará el objeto, mientras que a la derecha añadiremos el contenido.
1 Con Windows, también lo podemos crear con el atajo de teclado Alt+-. Con macOs, Option+-.
A continuación, crearemos los objetos siguientes:
Comprueba que estos objetos se han creado en Global Environment:
En la creación de objetos hay algunas reglas básicas que se deben tener en cuenta:
- R distingue entre mayúsculas (
Suma
) y minúsculas (suma
). - Si guardamos una operación (
3 + 4 + 6 + 6
) en un objeto, R nos guardará solo el resultado de la operación (19
). - Si guardamos un objeto con el nombre de un objeto ya creado (
V
), R sobrescribirá el antiguo objeto. Así, la segunda vez que hemos creado un objeto con nombreV
, R ha sobrescrito el nuevo resultado.
4.2 Consulta, reproducción y eliminación de objetos
Con los objetos podemos hacer cuatro acciones principales:
-
Consultar los objetos que hemos creado tecleando
ls()
. - Reproducir el contenido de un objeto tecleando el nombre seguido de Ctrl+Enter.
-
Eliminar los objetos de Global Environment utilizando la función
rm()
. Por ejemplo,rm(Suma, V)
eliminará los objetosSuma
yV
de Global Environment. -
Eliminar todos los objetos utilizando
rm(list = ls())
.
Podemos reproducir el contenido de los objetos que acabamos de crear si situamos el cursor en la línea de código del script que contiene el nombre del objeto que queremos reproducir y pulsamos Ctrl+Enter.
suma
Suma
V
Recordemos que, como hemos visto, también podemos reproducir un objeto si lo seleccionamos en el script y pulsamos Ctrl+Enter.
4.3 Importar archivos
Hasta ahora hemos creado objetos de poco interés sustantivo sobre la temática que estamos estudiando. Aunque pueda ser apasionante viajar por el universo de Star Wars, la gracia de crear objetos es, como hemos mencionado anteriormente, conseguir que contengan datos sobre temas que tengan relación directa con nuestra disciplina de estudio. Esto se hace mediante la importación de archivos. El procedimiento habitual con R será el siguiente:
- Convertiremos una base de datos en un objeto de R. Por ejemplo, una base de datos de partidos políticos, o de grupos terroristas, o de bombardeos en Yemen.
- Trabajaremos el objeto con funciones. Las funciones nos permitirán transformar los datos para que respondan a nuestras preguntas.
Los datos que nos interesan se suelen encontrar en archivos que tienen formatos que probablemente nos resultan familiares, como .xlsx
, .csv
o .dta
. Para transformar estos datos en objeto de R, las funciones de importación tienen nombres bastante intuitivos. Por ejemplo:
- Si queremos leer un archivo
csv
, la función será habitualmenteread_csv()
, que está en el paquetereadr
. - Si queremos leer un archivo
xlsx
, la función será habitualmenteread_xlsx()
, que está en el paquetereadxl
.
4.3.1 Importar desde una web
En algunas ocasiones, importar un archivo desde una web puede ser muy sencillo. Solo deberemos conocer la dirección web en la que se encuentra, examinar de qué tipo de archivo se trata, dar un nombre al objeto y aplicar la función que queremos utilizar. Por ejemplo:
- Web:
https://www.chesdata.eu/s/Candidate_Ukraine_2014.csv
. - Tipo de archivo: vemos que es un archivo
csv
. - Nombre del objeto:
ches
. - Función:
read_csv()
.
A continuación, importaremos un archivo que está en la página web de la Chapel Hill Expert Survey (CHES). La función que necesitamos pertenece al paquete readr
, que deberemos tener cargado si queremos que funcione:
ches <- read_csv("https://www.chesdata.eu/s/Candidate_Ukraine_2014.csv")
Es importante remarcar que el nombre de la ubicación de internet ha de ir entre comillas. Una vez que hemos creado el objeto ches
, ya le podemos aplicar algunas funciones como las que hemos visto anteriormente.
Si el código anterior nos ha funcionado es porque tenemos cargado el paquete readr
, que contiene la función read_csv()
. Del mismo modo, si queremos importar a R un archivo de Excel, necesitaremos las funciones read_xlsx()
o read_xls()
del paquete readxl
, que también deberemos tener cargado. Estas y otras formas de importar archivos las resumimos en la siguiente tabla 4.1.
Tipo de archivo | Paquete | Funciones |
---|---|---|
csv | readr | read_csv() o read_csv2() |
xls | readxl | read_xls() |
xlsx | readxl | read_xlsx() |
dta | foreign | read.dta() |
dta | haven | read_dta() |
sav | haven | read_sav() |
spss | haven | read_spss() |
Como se observa en la tabla, podemos distinguir dos tipos de funciones csv. La función read_csv()
importa los archivos que están codificados en formato americano, donde la coma separa los valores y el punto indica los decimales, mientras que la función read_csv2()
importa los archivos codificados en formato europeo, donde el punto y coma es el separador y la coma indica los decimales.
4.3.2 Importación desde el directorio de trabajo
Sin embargo, lo más habitual es que no sea tan fácil importar los datos directamente de internet. Normalmente, lo que tendremos que hacer será entrar a la página web donde están los datos, descargar el archivo en nuestro ordenador, situarlo en nuestro directorio de trabajo e importarlo a R2.
2 Hay funciones, como download.file()
, que nos permiten automatizar la descarga de archivos desde internet. No obstante, es una función que genera errores en algunos ordenadores, por lo que no lo aprenderemos hasta más adelante.
En el caso del archivo anterior, lo único que deberemos hacer es asegurarnos de tener el archivo en el directorio de trabajo y poner su nombre, entrecomillado, en la función de importación.
ches <- read_csv("Candidate_Ukraine_2014.csv")
Otra opción para importar archivos, muy práctica, es clicar directamente en el archivo del directorio de trabajo y seleccionar Import Dataset:
En el ejercicio siguiente descargaremos un archivo de Excel, lo situaremos en nuestro directorio de trabajo y lo convertiremos en un objeto de R:
Queremos trabajar con los Sustainable Development Goals (SDG), que están en la web de Sustainable Development Report. Dentro de la web, los datos están en la parte inferior de la pantalla. En la nueva pantalla que aparecerá, pulsa “View raw” para descargar los datos.
Descargaremos el archivo y nos aseguraremos de que esté ubicado en nuestro directorio de trabajo.
También podemos consultar el contenido de nuestro directorio de trabajo con la función siguiente:
dir()
Finalmente, dado que tenemos cargado el paquete readxl
, transformaremos el archivo de Excel en un objeto de R mediante la función siguiente. Fijaos en que hemos introducido el argumento sheet = 4
en la función. Estos argumentos nos sirven para dar indicaciones más detalladas a las funciones. En este caso, estamos precisando que los datos que nos interesan están en la cuarta pestaña del archivo de Excel.
sdg <- read_xlsx("SDR 2021 - Database.xlsx", sheet = 4)
Una vez creado el objeto sdg
, ya le podemos aplicar algunas funciones.
En algunos proyectos, es posible que debamos poner muchos documentos a nuestro directorio de trabajo. Una forma útil de ordenar los archivos es utilizar el sistema de carpetas habitual.
- En la ventana Files, crearemos una carpeta que se denomine
Datasets
.
Situaremos el archivo
SDR 2021 - Database.xlsx
dentro de la carpetaDatasets
.Incluiremos
Datasets/
antes del nombre del archivo en la función de importación.
sdg <- read_xlsx("Datasets/SDR 2021 - Database.xlsx", sheet = 4)
En algunas ocasiones, la descarga de archivos se puede automatizar. De este modo, en lugar de tener que ir a una página web para descargar un archivo, podemos utilizar la función download.file()
para descargarlo. Como primer argumento de la función indicaremos la ubicación del archivo en internet y como segundo argumento escribiremos el nombre que recibirá el archivo una vez descargado. Por defecto, el archivo se descarga en el directorio de trabajo.
También podemos automatizar la descompresión de un archivo zip. En lugar de descomprimirlo manualmente, sólo necesitaremos utilizar la función unzip()
para descomprimir su contenido.
Prueba a descargar el siguiente archivo:
# Download zip file
download.file("https://www.jordimas.cat/files/download_file_sample.zip", "download_file_sample.zip")
# Unzip file
unzip("download_file_sample.zip")
Sin embargo, hay que tener en cuenta que la función download.file()
da problemas en algunos ordenadores. El problema lo notaremos cuando intentemos convertir los archivos descargados en modo automático a objeto de R con alguna función read
. Si nos da un mensaje de error en la consola, deberemos eliminar los archivos descargados con la función download.file()
y los volveremos a descargar manualmente. Debido a estos problemas, en estos módulos y en los siguientes siempre optaremos por la descarga manual.