Você pode usar a commandArgs
função para obter todas as opções que foram passadas pelo Rscript para o intérprete R real e procurá-las --file=
. Se seu script foi iniciado a partir do caminho ou se foi iniciado com um caminho completo, o script.name
abaixo começará com a '/'
. Caso contrário, ele deve ser relativo ao cwd
e você pode concaturar os dois caminhos para obter o caminho completo.
Editar: parece que você precisaria apenas do item script.name
acima e retira o componente final do caminho. Eu removi a cwd()
amostra desnecessária, limpei o script principal e postei o meu other.R
. Apenas salve esse script e o other.R
script no mesmo diretório chmod +x
, e execute o 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)
outro.R :
print("hello")
saída :
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"
É isso que acredito que dehmann está procurando.