Bạn có thể sử dụng commandArgschứ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.namebê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.nametrê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.Rtậ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.