Anda dapat menggunakan commandArgsfungsi 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.namebawah 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.nameatas 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.Rskrip 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.