Capítulo 14 Proyecto de trabajo
Estamos listos/as para crear nuestro primer proyecto de R
para trabajar ordenadicos/as.
Cuando se empieza a programar para un trabajo concreto de R
es recomendable crearnos lo que se conoce como un proyecto de R
: en lugar de ir abriendo ventanas sueltas para programar (las pestañas de los scripts, los archivos con extensión .R
que hemos comentado), podemos agruparlos en distintos proyectos, de forma que podamos acceder a ellos de forma ordenada (algo así como crear carpetas en nuestro disco duro, pero en RStudio
).
14.1 Crear proyecto
Para crear nuestro proyecto deberemos de ir al menú superior File << New Project
(ver 14.1)
Se nos abrirá una ventana con 3 opciones:
New directory: crear un proyecto desde el inicio (opción recomendable).
Existing directory: crear un proyecto con los códigos que tienes ya guardados en una carpeta.
Version control: para importar el proyecto de algún repositorio y vincularlo a él.
Deberemos elegir el directorio de nuestro ordenador donde queremos que se guarde (una carpeta que contendrá todos los códigos y datos de ese proyecto), así como el nombre del proyecto (que será a su vez el nombre de la subcarpeta que se os creará en el ordenador).
Una vez que el proyecto está creado, abriremos un script de R
(donde escribiremos el código), escribiremos si queremos una descripción del proyecto en la primera línea y guardaremos el archivo (archivo de extensión .R
).
Este será nuestro código principal (puedes ponerle el nombre que quieras, normalmente se le llama main.R
para diferenciarlo del resto), desde el que iremos construyendo nuestro código e iremos llamando a otros archivos si es necesario. Recuerda que programar es como escribir: cuanto más limpio y estructurado, mejor se entenderá.
La ventaja de tener los códigos agrupados por proyectos es que si estamos trabajando en varios a la vez podemos saltar de uno a otro, visualizando solo los códigos de un proyecto, y no los 100 archivos que vayamos creando.
14.2 Directorios de trabajo y cabecera
Como luego veremos, es altamente recomendable que todos los archivos (códigos, datos, imágenes, etc) estén dentro de la misma carpeta del proyecto (aunque podamos crear subdirectorios), para que trabajar en el proyecto sea más sencillo e intuitivo. Vamos a crearnos dentro de la carpeta del proyecto, una subcarpeta que se llame DATOS
, en donde debemos descargar todos los ficheros que hay en https://github.com/dadosdelaplace/courses-intro-r/tree/main/DATOS, y otra llamada CODIGOS
, donde guardar nuestros archivos .R
(por eso de ser ordenadicos).
En esa carpeta de códigos vamos a crear de prueba el código llamado variables.R
donde vamos a definir algunas variables que luego usaremos en el código principal (suele suceder con variables que van a ser fijas como nombres, fechas o codificaciones de variables).
# Descripción: script de prueba con variables
# Variables
x <- c(1, 2, 0, -1, 71) # Vector de números
y <- c("hola", "me", "llamo", "Javier") # Vector de caracteres
apellido <- "Álvarez"
# Fechas
hoy <- as_date(today()) # Convertir a tipo fecha la fecha de hoy
fecha_origen <- as_date("2021-01-01") # Inicio de año 2021
No es obligatorio pero es altamente recomendable tener muy estructurado nuestros códigos, de forma que el archivo .R
haga una tarea concreta y definida (uno carga archivos, otro preprocesa, otro hace un modelo, otro hace las gráficas), y sea el código principal el que haga una llamada limpia a todos ellos, para que en caso de error, la detección del mismo sea más sencilla.
Así que eso haremos: desde nuestro archivo principal main.R
llamaremos a ese archivo variables.R
, para luego usar las variables definidas en él.
¿Cómo indicarle a R
donde está nuestro fichero?
En R
, como en todo lenguaje de programación, podemos consultar lo que el ordenador llama directorio de trabajo: la carpeta «base» desde donde está ejecutando tu código. Dicha ruta de directorio se puede consultar con la función getwd()
, pudiendo ver los archivos y carpetas que hay dentro del mismo con el comando dir()
Lo ideal es empezar el código fijando como directorio de trabajo el directorio donde tengamos nuestro archivo principalmain.R
y para ello usaremos la función setwd()
, cuyo argumento será la ruta donde queremos fijarlo. Para hacerlo de forma automática (y que el código pueda ser abierto por ti pero también por otros que no tengan tu misma estructura de carpetas), obtendremos de forma automática la ruta del archivo main.R
o del proyecto con la orden rstudioapi::getSourceEditorContext()$path
, y después usaremos dirname()
para quedarnos solo con la ruta de carpetas (eliminando el nombre del fichero al final). Esa será la ruta que le pasaremos a setwd()
, quedando nuestro directorio de trabajo automáticamente fijado, sin preocuparnos de la ruta
# Fijamos directorio de trabajo automáticamente
setwd(dirname(rstudioapi::getSourceEditorContext()$path))
Una vez que hemos fijado nuestro directorio, para cargar código .R
, basta que usemos la función source()
, cuyo argumento será la ruta del archivo. Como tenemos de directorio base el directorio en el que tenemos nuestro archivo principal (./
), bastará que empecemos a escribir source("./")
, presionar el tabulador, y se nos abrirá el menú de archivos de nuestro directorio de trabajo, pudiendo ir seleccionando de forma sencilla la ruta de nuestro archivo.
14.3 Ejecución
Ese archivo que hemos incluido en el código principal nos cargará las variables que hemos definido en él, pudiendo usarlas en el código. Vamos a ejecutar lo que tenemos de momento, y para ello tenemos 2 opciones: o copiar el código del script en la consola y pulsar ENTER, o bien, activando la casilla source on save y guardando el script (no solo se guardará sino que se ejecutará).
Como vemos en la imagen 14.16, una vez ejecutado, tenemos en nuestro panel de entorno (parte superior derecha) las variables ya cargadas que teníamos definidas en nuestro fichero variables.R
.
Prueba a escribir algunas funciones que hemos aprendido con dichas variables y vuelve a hacer click en «guardar» con source on save activado.
# Sumamos 3 a cada elemento de x
z <- x + 3
z
## [1] 4 5 3 2 74
# Imprimimos por pantalla la frase unida, y a dicha frase
# le pegamos nuestro apellido
cat(paste(paste(y, collapse = " "), apellido))
## hola me llamo Javier Álvarez
# Días que han pasado desde el inicio de año
dias <- hoy - fecha_origen
dias
## Time difference of 622 days
La función cat()
nos muestra por consola el texto que le pasemos de argumento (función especial para mensajes de alerta por consola)
Ya hemos ejecutado nuestro primer proyecto en .R
:)
WARNING: guardar los scripts
Los scripts que tengas sin guardar tendrán un asterisco *
al final del nombre en la pestaña superior de la ventana.
14.4 Consejos
CONSEJOS
Limpiar consola
Podemos limpiar la consola clickando en al escoba que tenemos en la parte superior derecha de la misma. Esta acción no nos elimina ninguna variable, simplemente nos limpia la consola de mensajes.
Comentarios en los códigos
Es crucial que intentes documentar al máximo tu código y que te acostumbres a ello desde el principio, dejando explícito que haces en cada paso, tanto para ti como para otra persona que pueda leer tu código y lo entienda. Para ello usaremos # comentario
cuando queramos dejar comentarios en el código. Dichas partes, amén de estar en otro color, no son leídas por R
ni ejecutadas: son comentarios que el programa «no ve», solo son para nosotros.