Ubique archivos de datos y secuencias de comandos R sin cambiar el directorio de trabajo

Jesse John 21 junio 2023
  1. Proyectos de R Studio
  2. la función archivo.ruta()
  3. el paquete aquí
  4. el flujo de trabajo sugerido
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:

  1. Obtenemos una nueva instancia de R Studio con un espacio de trabajo dedicado a ese proyecto.
  2. 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:

  1. 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ón file.path() para codificar esta ruta.

  2. Cargue el paquete aquí con biblioteca (aquí).

  3. Construya rutas relativas a los archivos requeridos desde la carpeta principal del proyecto utilizando la función aquí(). La sintaxis es similar a archivo.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

  1. Inicie el proyecto abriendo el archivo .Rproj. Esto establece el directorio de trabajo en la carpeta que contiene ese archivo.
  2. 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.
  3. En scripts y archivos .Rmd, siga los pasos del apartado anterior para utilizar el paquete aquí.

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í.

Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.