Ubique archivos de datos y secuencias de comandos R sin cambiar el directorio de trabajo
Es posible que a menudo queramos establecer la ubicación del archivo actual como el directorio de trabajo de R porque nos permite usar rutas relativas para hacer referencia a los scripts y archivos de datos de R necesarios. Sin embargo, cambiar el directorio de trabajo no es una solución ideal.
Este artículo muestra cómo combinar un proyecto de R Studio, el paquete aquí
y la función file.path()
para permitir que R ubique los archivos necesarios para un proyecto sin cambiar manualmente el directorio de trabajo a la ubicación del script actual.
Proyectos de R Studio
Cuando creamos un Proyecto R usando R Studio, crea un archivo .Rproj
en la carpeta especificada.
Cuando abrimos un archivo .Rproj
:
- Obtenemos una nueva instancia de R Studio con un espacio de trabajo dedicado a ese proyecto.
- La carpeta en la que existe el
.Rproj
se convierte en el directorio de trabajo.
Sin embargo, un archivo .Rmd
en una subcarpeta de esta carpeta de proyecto cambiará temporalmente el directorio de trabajo a su carpeta cuando esté tejido
. El paquete aquí
que se menciona a continuación resuelve este problema.
la función archivo.ruta()
La función básica de R, file.path()
, nos permite construir la ruta a los archivos requeridos de forma independiente a la plataforma.
Por ejemplo, si el archivo mydata.csv
está en una subcarpeta llamada datafiles
, la sintaxis es:
file.path("datafiles", "mydata.csv")
La función devuelve la ruta utilizando el separador correcto para el sistema operativo en el que se ejecuta el script que contiene el código.
el paquete aquí
Cuando se usa en un Proyecto R, el paquete aquí
nos permite escribir la ruta a todos los archivos como rutas relativas desde la carpeta principal del proyecto.
Lo logra buscando el archivo .Rproj
relativo a la ubicación del archivo actual.
Necesita ser instalado para usar el paquete aquí
. Si los archivos se comparten entre diferentes usuarios o computadoras, deben instalarse en todas las computadoras involucradas.
Use el paquete aquí
en cada script o documento .Rmd
de la siguiente manera:
-
Primero, llame a
here::i_am()
con la ruta al archivo actual relativa a la carpeta principal del proyecto, que tiene el archivo.Rproj
. Utilice la funciónfile.path()
para codificar esta ruta. -
Cargue el paquete
aquí
conbiblioteca (aquí)
. -
Construya rutas relativas a los archivos requeridos desde la carpeta principal del proyecto utilizando la función
aquí()
. La sintaxis es similar aarchivo.ruta()
.Sin embargo,
here()
utiliza su conocimiento de la ubicación del archivo.Rproj
para ayudar a R a localizar los archivos a los que se hace referencia.
Ejemplo:
# Suppose the folder structure of the project is as follows.
ProjFolder
|___Scripts
| |__MyScript.R
|
|___Data
| |__MyData.csv
|
|__Documents
|__MyRMarkdown.Rmd
# In .R files. The same for .Rmd files.
# First, give the path of this script file relative to the main project folder.
here::i_am(file.path("Scripts", "MyScript.R"))
# Then, load the here package.
library(here)
# Subsequently, use the here() function whenever a path is written.
# Use a relative path from the main project folder.
myvar = read.csv2(here("Data", "MyData.csv"))
el flujo de trabajo sugerido
- Inicie el proyecto abriendo el archivo
.Rproj
. Esto establece el directorio de trabajo en la carpeta que contiene ese archivo. - Abra los archivos requeridos usando el panel de archivos en R Studio. Esto garantiza que se abran en esta instancia particular de R Studio con el directorio de trabajo correcto.
- En scripts y archivos
.Rmd
, siga los pasos del apartado anterior para utilizar el paqueteaquí
.
Toda la carpeta del proyecto puede residir en cualquier ubicación de la computadora. Puede compartirse como un todo y usarse en cualquier otra computadora que tenga el software requerido.
Si la función aquí()
entra en conflicto con otros paquetes, utilice la sintaxis aquí::aquí()
.
Referencias
Para obtener detalles sobre los proyectos de R Studio, consulte R para ciencia de datos.
Para obtener detalles sobre el paquete aquí
, primero consulte la publicación del blog: ¿Por qué debo usar el paquete aquí cuando ya estoy usando proyectos?
. Luego lea la viñeta de aquí
.