Puede utilizar la commandArgs
función para obtener todas las opciones que Rscript pasó al intérprete R real y buscarlas.--file=
. Si su script se inició desde la ruta o si se inició con una ruta completa, lo script.name
siguiente comenzará con un '/'
. De lo contrario, debe ser relativo al cwd
y puede concatenar las dos rutas para obtener la ruta completa.
Editar: parece que solo necesitarías lo script.name
anterior y quitar el componente final de la ruta. Eliminé la cwd()
muestra innecesaria, limpié el script principal y publiqué miother.R
. Simplemente guarde este script y el other.R
script en el mismo directorio chmod +x
, y ejecute el script principal.
main.R :
#!/usr/bin/env Rscript
initial.options <- commandArgs(trailingOnly = FALSE)
file.arg.name <- "--file="
script.name <- sub(file.arg.name, "", initial.options[grep(file.arg.name, initial.options)])
script.basename <- dirname(script.name)
other.name <- file.path(script.basename, "other.R")
print(paste("Sourcing",other.name,"from",script.name))
source(other.name)
otro.R :
print("hello")
salida :
burner@firefighter:~$ main.R
[1] "Sourcing /home/burner/bin/other.R from /home/burner/bin/main.R"
[1] "hello"
burner@firefighter:~$ bin/main.R
[1] "Sourcing bin/other.R from bin/main.R"
[1] "hello"
burner@firefighter:~$ cd bin
burner@firefighter:~/bin$ main.R
[1] "Sourcing ./other.R from ./main.R"
[1] "hello"
Esto es lo que creo que Dehmann está buscando.