Estoy trabajando en algunos tutoriales en R. Cada código R está contenido en una carpeta específica. Hay archivos de datos y otros archivos allí. Quiero abrir el .r
archivo y obtenerlo de forma tal que no tenga que cambiar el directorio de trabajo en Rstudio como se muestra a continuación:
¿Hay alguna manera de especificar mi directorio de trabajo automáticamente en R.
r
automation
working-directory
Stat-R
fuente
fuente
?setwd
?getwd
load
archivos .rdata en la misma carpeta, nosource
con el directorio de trabajo establecido en la ruta del archivo de origen.Respuestas:
Para obtener la ubicación de un script que se obtiene, puede usar
utils::getSrcDirectory
outils::getSrcFilename
. Entonces, cambiar el directorio de trabajo al del archivo actual se puede hacer con:Esto no funciona en rstudio si ejecuta el código en lugar de Fuente ing ella. Para eso, necesitas usar
rstudioapi::getActiveDocumentContext
.Esta segunda solución requiere que esté utilizando RStudio como su IDE, por supuesto.
fuente
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
getActiveDocumentContext()
en la consola dentro de RStudio, la ruta se informa como''
. Sin embargo, si ejecuta la línea de código en la parte del editor, se ejecutará como se esperaba. Esto puede abordar el comentario de @Andrurstudioapi
paquete. Intenta actualizar a la última.Sé que esta pregunta está desactualizada, pero también estaba buscando una solución para eso y Google lo enumera en la parte superior:
coloque eso en algún lugar del archivo (lo mejor sería el comienzo, sin embargo), para que el wd cambie de acuerdo con ese archivo.
Según los comentarios, esto podría no funcionar necesariamente en todas las plataformas (Windows parece funcionar, Linux / Mac para algunos). Tenga en cuenta que esta solución es para 'abastecer' los archivos, no necesariamente para ejecutar fragmentos en ese archivo.
vea también get filename y path of `source`d file
fuente
Error in dirname(parent.frame(2)$ofile) : a character vector argument expected
funciona para mí, pero si no quieres usar rstudioapi y no estás en un proyecto, puedes usar el símbolo ~ en tu camino. El símbolo ~ se refiere al directorio de trabajo predeterminado de RStudio (al menos en Windows).
Si su directorio de trabajo de RStudio es "D: / Documents",
setwd("~/proyect1")
es el mismo que setwd ("D: / Documents / proyect1").Una vez que se establece, puede navegar a un subdirectorio:
read.csv("DATA/mydata.csv")
. Es lo mismo queread.csv("D:/Documents/proyect1/DATA/mydata.csv")
.Si desea navegar a una carpeta principal, puede usar
"../"
. Por ejemplo:read.csv("../olddata/DATA/mydata.csv")
que es lo mismo queread.csv("D:/Documents/oldata/DATA/mydata.csv")
Esta es la mejor manera para mí de codificar scripts, sin importar qué computadora esté usando.
fuente
Esta respuesta puede ayudar:
Lo encontré en: https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory-
La respuesta de BumbleBee (con parent.frame en lugar de sys.frame) no me funcionó, siempre recibo un error.
fuente
Para rstudio , puede configurar automáticamente su directorio de trabajo en el directorio de script usando rstudioapi así:
Esto funciona al ejecutar o fuente su archivo.
Primero debe instalar el paquete rstudioapi. Observe que imprimo la ruta para estar 100% seguro de que estoy en el lugar correcto, pero esto es opcional.
fuente
La solución
no funciona para mi
Estoy usando un algoritmo de fuerza bruta, pero funciona:
Más fácil al buscar un directorio:
fuente
Si trabajas en Linux puedes probar esto:
setwd(system("pwd", intern = T) )
Esto funciona para mi.
fuente
pwd
también funciona en PowerShell (que actualmente se considera el shell predeterminado en Windows), donde es un aliasGet-Location
.Estaba buscando una solución a este problema, vine a esta página. Sé que está anticuado, pero las soluciones anteriores eran insatisfactorias o no funcionaban para mí. Aquí está mi trabajo si está interesado.
fuente
setwd( dirname(filepath) )
?Me doy cuenta de que este es un hilo viejo, pero tuve un problema similar con la necesidad de configurar el directorio de trabajo y no pude conseguir que ninguna de las soluciones funcionara para mí. Esto es lo que funcionó, en caso de que alguien más se encuentre con esto más adelante:
Es un poco complicado, pero básicamente usa comandos del sistema para obtener el directorio de trabajo y guardarlo en dummyfile.txt, luego R lee ese archivo usando data.table :: fread. El resto es simplemente limpiar lo que se imprimió en el archivo para que me quede solo la ruta del directorio.
Necesitaba ejecutar R en un clúster, por lo que no había forma de saber en qué directorio terminaría (a los trabajos se les asigna un número y un nodo de cálculo). Esto hizo el truco para mí.
fuente
Entiendo que esto está desactualizado, pero no pude lograr que las respuestas anteriores funcionaran de manera muy satisfactoria, por lo que quería contribuir con mi método en caso de que alguien más encuentre el mismo error mencionado en los comentarios a la respuesta de BumbleBee.
El mío se basa en un simple comando del sistema. Todo lo que alimenta la función es el nombre de su script:
La salida de la función se vería así
"/Users/you/Path/To/Script"
. Espero que esto ayude a cualquiera que se haya quedado atascado.fuente
El
here
paquete proporciona lahere()
función, que devuelve el directorio raíz del proyecto en función de algunas heurísticas.No es la solución perfecta, ya que no encuentra la ubicación del script, pero es suficiente para algunos propósitos, así que pensé en ponerlo aquí.
fuente
here::set_here()
la fuente.La mayoría de las GUI suponen que si está en un directorio y "abre", hace doble clic o intenta ejecutar un archivo .R, el directorio en el que reside será el directorio de trabajo a menos que se especifique lo contrario. La GUI de Mac proporciona un método para cambiar ese comportamiento predeterminado que se puede cambiar en el panel de Inicio de Preferencias que establezca en una sesión en ejecución y que entre en vigencia en el próximo "inicio". También deberías estar mirando:
La documentación de RStudio dice:
"Cuando se inicia a través de una asociación de archivos, RStudio establece automáticamente el directorio de trabajo en el directorio del archivo abierto". La configuración predeterminada es que RStudio se registre como un controlador para archivos .R, aunque también se menciona la posibilidad de establecer una "asociación" predeterminada con RStudio para extensiones .Rdata y .R. No puedo decir si tener el estado de 'controlador' y el estado de 'asociación' son los mismos en Linux.
http://www.rstudio.com/ide/docs/using/workspaces
fuente
tampoco funciona para mí, pero lo siguiente (como se sugiere en https://stackoverflow.com/a/35842176/992088 ) funciona para mí en ubuntu 14.04
fuente
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
también en Ubuntu 14.04En caso de que use codificación UTF-8:
Necesita instalar el paquete rstudioapi si aún no lo ha hecho.
fuente
Aquí hay otra forma de hacerlo:
fuente