Bạn có thể sử dụng commandArgs
chức năng để có được tất cả các tùy chọn đã được chuyển qua Rupcript cho trình thông dịch R thực tế và tìm kiếm chúng --file=
. Nếu tập lệnh của bạn được khởi chạy từ đường dẫn hoặc nếu nó được khởi chạy với một đường dẫn đầy đủ, script.name
bên dưới sẽ bắt đầu bằng một '/'
. Mặt khác, nó phải liên quan đếncwd
và bạn có thể nối hai đường dẫn để có được đường dẫn đầy đủ.
Chỉnh sửa: có vẻ như bạn chỉ cần phần script.name
trên và loại bỏ thành phần cuối cùng của đường dẫn. Tôi đã xóa cwd()
mẫu không cần thiết và dọn sạch tập lệnh chính và đăng của tôi other.R
. Chỉ cần lưu tập lệnh này và other.R
tập lệnh vào cùng thư mục chmod +x
, và chạy tập lệnh chính.
chính.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)
khác.R :
print("hello")
đầu ra :
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"
Đây là những gì tôi tin rằng dehmann đang tìm kiếm.