varias superponer studio modificar lineas graficos graficas ejes r path

studio - superponer graficas en r



Obtener la ruta de un guiĆ³n R (8)

¿Qué hay de usar el sistema y comandos de shell? Con el de Windows, creo que al abrir el script en RStudio establece el directorio del shell actual en el directorio del script. Puede que tenga que agregar cd C: / eg o cualquier unidad que desee buscar (por ejemplo, shell (''dir C: // * file_name / s'', intern = TRUE) - // para escapar del carácter de escape). Solo funcionará para archivos con nombres exclusivos a menos que especifique subdirectorios (para Linux comencé a buscar desde /). En cualquier caso, si usted sabe cómo encontrar algo en el intérprete de comandos, esto proporciona un diseño para encontrarlo dentro de R y devolver el directorio. Debería funcionar si está comprando o ejecutando el script, pero no he explorado completamente los posibles errores.

#Get operating system OS<-Sys.info() win<-length(grep("Windows",OS)) lin<-length(grep("Linux",OS)) #Find path of data directory #Linux Bash Commands if(lin==1){ file_path<-system("find / -name ''file_name''", intern = TRUE) data_directory<-gsub(''/file_name'',"",file_path) } #Windows Command Prompt Commands if(win==1){ file_path<-shell(''dir file_name /s'', intern = TRUE) file_path<-file_path[4] file_path<-gsub(" Directory of ","",file_path) filepath<-gsub("////","/",file_path) data_directory<-file_path } #Change working directory to location of data and sources setwd(data_directory)

¿Hay alguna forma de encontrar programáticamente la ruta de un script R dentro del script?

Lo estoy preguntando porque tengo varios scripts que usan RGtk2 y cargan una GUI desde un archivo .glade.

En estos scripts, me veo obligado a poner una setwd("path/to/the/script") al principio, de lo contrario no se encontrará el archivo .glade (que está en el mismo directorio).

Esto está bien, pero si muevo el script en un directorio diferente o a otra computadora, tengo que cambiar la ruta. Lo sé, no es gran cosa, pero sería bueno tener algo como:

setwd(getScriptPath())

Entonces, ¿existe una función similar?



Esto funciona para mí:

getSrcDirectory(function(x) {x})

Esto define una función anónima (que no hace nada) dentro del script, y luego determina el directorio de origen de esa función, que es el directorio donde está el script.


Si envuelve su código en un paquete, siempre puede consultar partes del directorio del paquete.
Aquí hay un ejemplo del paquete RGtk2:

> system.file("ui", "demo.ui", package="RGtk2") [1] "C:/opt/R/library/RGtk2/ui/demo.ui" >

Puede hacer lo mismo con un directorio inst/glade/ en sus fuentes que se convertirá en un directorio glade/ en el paquete instalado - y system.file() calculará la ruta cuando esté instalado, independientemente del sistema operativo.


Solo para RStudio:

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

Esto funciona cuando se ejecuta o se origina su archivo.


Utilice la source("yourfile.R", chdir = T)


Explotar el argumento "--file" implícito de Rscript

Al invocar el script con "Rscript" ( Rscript doc ), la ruta completa del script se proporciona como un parámetro del sistema. La siguiente función explota esto para extraer el directorio de scripts:

getScriptPath <- function(){ cmd.args <- commandArgs() m <- regexpr("(?<=^--file=).+", cmd.args, perl=TRUE) script.dir <- dirname(regmatches(cmd.args, m)) if(length(script.dir) == 0) stop("can''t determine script dir: please call the script with Rscript") if(length(script.dir) > 1) stop("can''t determine script dir: more than one ''--file'' argument detected") return(script.dir) }


#'' current script dir #'' @param #'' @return #'' @examples #'' works with source() or in RStudio Run selection #'' @export z.csd <- function() { # http://.com/questions/1815606/rscript-determine-path-of-the-executing-script # must work with source() if (!is.null(res <- .thisfile_source())) res else if (!is.null(res <- .thisfile_rscript())) dirname(res) # http://.com/a/35842176/2292993 # RStudio only, can work without source() else dirname(rstudioapi::getActiveDocumentContext()$path) } # Helper functions .thisfile_source <- function() { for (i in -(1:sys.nframe())) { if (identical(sys.function(i), base::source)) return (normalizePath(sys.frame(i)$ofile)) } NULL } .thisfile_rscript <- function() { cmdArgs <- commandArgs(trailingOnly = FALSE) cmdArgsTrailing <- commandArgs(trailingOnly = TRUE) cmdArgs <- cmdArgs[seq.int(from=1, length.out=length(cmdArgs) - length(cmdArgsTrailing))] res <- gsub("^(?:--file=(.*)|.*)$", "//1", cmdArgs) # If multiple --file arguments are given, R uses the last one res <- tail(res[res != ""], 1) if (length(res) > 0) return (res) NULL }