คุณสามารถใช้commandArgs
ฟังก์ชั่นเพื่อให้ได้ตัวเลือกทั้งหมดที่ถูกส่งผ่านโดย Rscript กับ R --file=
ล่ามที่เกิดขึ้นจริงและค้นหาพวกเขาสำหรับ หากสคริปต์ของคุณได้รับการเปิดตัวจากเส้นทางหรือถ้ามันถูกเปิดตัวด้วยเส้นทางที่เต็มด้านล่างนี้จะเริ่มต้นด้วยscript.name
'/'
มิฉะนั้นจะต้องสัมพันธ์กับcwd
และคุณสามารถต่อสองเส้นทางเข้าด้วยกันเพื่อรับเส้นทางแบบเต็ม
แก้ไข:ดูเหมือนว่าคุณต้องการเพียงscript.name
ด้านบนและเพื่อตัดองค์ประกอบสุดท้ายของเส้นทาง ผมเคยเอาออกไม่จำเป็นตัวอย่างและการทำความสะอาดขึ้นสคริปต์หลักและโพสต์ของฉันcwd()
other.R
เพียงบันทึกออกสคริปต์นี้และother.R
สคริปต์ลงในไดเรกทอรีเดียวกันchmod +x
พวกเขาและเรียกใช้สคริปต์หลัก
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)
อื่น ๆ R :
print("hello")
ผลลัพธ์ :
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"
นี่คือสิ่งที่ฉันเชื่อว่า dehmann กำลังมองหา