working trabajo studio ruta para fijar directorio como comandos carpeta cambiar r automation working-directory

trabajo - fijar carpeta en r



Comando R para configurar el directorio de trabajo en la ubicaciĆ³n del archivo fuente en Rstudio (13)

En caso de que use la codificación UTF-8:

path <- rstudioapi::getActiveDocumentContext()$path Encoding(path) <- "UTF-8" setwd(dirname(path))

Necesita instalar el paquete rstudioapi si aún no lo ha hecho.

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 archivo .r y .r tal manera 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.


Entiendo que esto está desactualizado, pero no pude lograr que las primeras respuestas funcionaran satisfactoriamente, por lo que quise 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 comando de sistema simple. Todo lo que alimentas la función es el nombre de tu script:

extractRootDir <- function(x) { abs <- suppressWarnings(system(paste("find ./ -name",x), wait=T, intern=T, ignore.stderr=T))[1]; path <- paste("~",substr(abs, 3, length(strsplit(abs,"")[[1]])),sep=""); ret <- gsub(x, "", path); return(ret); } setwd(extractRootDir("myScript.R"));

La salida de la función se vería como "/Users/you/Path/To/Script" . Espero que esto ayude a cualquier otra persona que pueda haberse quedado atascada.



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 modificar en el panel de Inicio de las Preferencias que configura en una sesión en funcionamiento y que entra en vigencia en el siguiente "inicio". Usted también debería estar mirando:

?Startup

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 controlador para archivos .R, aunque también se menciona la posibilidad de establecer una "asociación" predeterminada con RStudio para las extensiones .Rdata y .R. Ya sea que tener el estado de "controlador" y el estado de "asociación" son los mismos en Linux, no puedo decirlo.

http://www.rstudio.com/ide/docs/using/workspaces


La solución

dirname(parent.frame(2)$ofile)

no funciona para mi

Estoy usando un algoritmo de fuerza bruta, pero funciona:

File <- "filename" Files <- list.files(path=file.path("~"),recursive=T,include.dirs=T) Path.file <- names(unlist(sapply(Files,grep,pattern=File))[1]) Dir.wd <- dirname(Path.file)

Más fácil al buscar un directorio:

Dirname <- "subdir_name" Dirs <- list.dirs(path=file.path("~"),recursive=T) dir_wd <- names(unlist(sapply(Dirs,grep,pattern=Dirname))[1])


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 lograr que ninguna de las soluciones funcionara para mí. Esto es lo que funcionó, en caso de que alguien más tropiece con esto más adelante:

# SET WORKING DIRECTORY TO CURRENT DIRECTORY: system("pwd=`pwd`; $pwd 2> dummyfile.txt") dir <- fread("dummyfile.txt") n<- colnames(dir)[2] n2 <- substr(n, 1, nchar(n)-1) setwd(n2)

Es un poco intrincado, pero básicamente esto usa los 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 solo limpiar lo que se imprimió en el archivo para que me quede solo con la ruta del directorio.

Necesitaba ejecutar R en un clúster, por lo que no había manera 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í.


Para obtener la ubicación de una secuencia de comandos de origen, puede utilizar utils::getSrcDirectory o utils::getSrcFilename . Así que cambiar el directorio de trabajo al del archivo actual se puede hacer con:

setwd(getSrcDirectory()[1])

Esto no funciona en RStudio si ejecuta el código en lugar de Source it it. Para eso, necesitas usar rstudioapi::getActiveDocumentContext .

setwd(dirname(rstudioapi::getActiveDocumentContext()$path))

Esta segunda solución requiere que esté utilizando RStudio como su IDE, por supuesto.


Sé que esta pregunta está desactualizada, pero también estaba buscando una solución para eso y Google lo menciona en la parte superior:

this.dir <- dirname(parent.frame(2)$ofile) setwd(this.dir)

poner eso en algún lugar del archivo (sin embargo, sería el mejor comienzo), de modo que el wd se modifique de acuerdo con ese archivo.

Según los comentarios, esto funciona solo en Windows. Cualquier solución para Linux / Max es apreciada.

ver también obtener el nombre de archivo y la ruta del archivo `source`d


Si está utilizando rstudio, puede establecer automáticamente su directorio de trabajo en el directorio de scripts usando rstudioapi de esa manera:

library(rstudioapi) # Getting the path of your current open file current_path = rstudioapi::getActiveDocumentContext()$path setwd(dirname(current_path )) print( getwd() )

Primero debe instalar el paquete rstudioapi. Tenga en cuenta que imprimo la ruta para estar 100% seguro de que estoy en el lugar correcto, pero esto es opcional.


Si trabajas en Linux, puedes probar esto:

setwd(system("pwd", intern = T) )

Esto funciona para mi.


Solo 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 me funcionaban. Aquí está mi trabajo si está interesado.

filename = "your_file.R" filepath = file.choose() # browse and select your_file.R in the window dir = substr(filepath, 1, nchar(filepath)-nchar(filename)) setwd(dir)


dirname(parent.frame(2)$ofile)

tampoco funciona para mí, pero el siguiente (como se sugiere en https://.com/a/35842176/992088 ) funciona para mí en ubuntu 14.04

dirname(rstudioapi::getActiveDocumentContext()$path)


dirname(rstudioapi::getActiveDocumentContext()$path)

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 lo mismo que setwd ("D: / Documents / proyect1").

Una vez que establezca eso, puede navegar a un subdirectorio: read.csv("DATA/mydata.csv") . Es lo mismo que read.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 que read.csv("D:/Documents/oldata/DATA/mydata.csv")

Esta es la mejor manera para que yo codifique las secuencias de comandos, sin importar la computadora que esté usando.