Mit der commandArgs
Funktion können Sie alle Optionen abrufen, die von Rscript an den eigentlichen R-Interpreter übergeben wurden, und nach ihnen suchen --file=
. Wenn Ihr Skript über den Pfad gestartet wurde oder wenn es mit einem vollständigen Pfad gestartet wurde, script.name
beginnt das Folgende mit einem '/'
. Andernfalls muss es relativ zu sein cwd
und Sie können die beiden Pfade zusammenfassen, um den vollständigen Pfad zu erhalten.
Bearbeiten: Es hört sich so an, als würden Sie nur das script.name
Obige benötigen und die letzte Komponente des Pfades entfernen. Ich habe das nicht benötigte cwd()
Beispiel entfernt, das Hauptskript bereinigt und mein other.R
. Speichern Sie dieses Skript und das other.R
Skript einfach im selben Verzeichnis chmod +x
und führen Sie das Hauptskript aus.
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)
other.R :
print("hello")
Ausgabe :
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"
Ich glaube, das ist es, wonach Dehmann sucht.