Anda dapat menggunakan commandArgs
fungsi ini untuk mendapatkan semua opsi yang diteruskan oleh Rscript ke penerjemah R aktual dan mencarinya --file=
. Jika skrip Anda diluncurkan dari jalur atau jika diluncurkan dengan jalur lengkap, di script.name
bawah ini akan dimulai dengan a '/'
. Kalau tidak, itu harus relatif terhadapcwd
dan Anda dapat menggabungkan kedua jalur untuk mendapatkan path lengkap.
Sunting: sepertinya Anda hanya membutuhkan yang di script.name
atas dan melepaskan komponen akhir dari path. Saya telah menghapus cwd()
sampel yang tidak dibutuhkan dan membersihkan skrip utama dan memposting other.R
. Simpan saja skrip dan other.R
skrip ini ke direktori yang sama chmod +x
, dan jalankan skrip utama.
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)
lainnya.R :
print("hello")
keluaran :
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"
Inilah yang saya percaya yang dicari oleh dehmann.