ฉันมีไฟล์ที่เรียกว่าa.r
มันมีchmod
ของ 755
sayHello <- function(){
print('hello')
}
sayHello()
ฉันจะเรียกใช้ผ่านทางบรรทัดคำสั่งได้อย่างไร
#!/usr/bin/env Rscript
ฉันมีไฟล์ที่เรียกว่าa.r
มันมีchmod
ของ 755
sayHello <- function(){
print('hello')
}
sayHello()
ฉันจะเรียกใช้ผ่านทางบรรทัดคำสั่งได้อย่างไร
#!/usr/bin/env Rscript
คำตอบ:
หากคุณต้องการให้เอาต์พุตพิมพ์ไปยังเทอร์มินัลวิธีที่ดีที่สุดคือใช้ Rscript
Rscript a.R
โปรดทราบว่าเมื่อใช้งานR CMD BATCH a.R
นั้นแทนที่จะเปลี่ยนเส้นทางไปยังเอาต์พุตมาตรฐานและแสดงบนเทอร์มินัลไฟล์ใหม่ที่ชื่อว่า a.Rout จะถูกสร้างขึ้น
R CMD BATCH a.R
# Check the output
cat a.Rout
อีกสิ่งหนึ่งที่ควรทราบเกี่ยวกับการใช้ Rscript คือมันไม่ได้โหลดmethods
แพคเกจโดยค่าเริ่มต้นซึ่งอาจทำให้เกิดความสับสน ดังนั้นหากคุณใช้วิธีใดก็ตามที่มีให้คุณจะต้องโหลดมันอย่างชัดเจนในสคริปต์ของคุณ
หากคุณต้องการใช้./a.R
วิธีการเรียกใช้สคริปต์จริงๆคุณสามารถเพิ่มที่เหมาะสม#!
ไปด้านบนของสคริปต์
#!/usr/bin/env Rscript
sayHello <- function(){
print('hello')
}
sayHello()
ฉันจะทราบด้วยว่าหากคุณใช้ระบบ * unix มีแพ็คเกจlittler ที่มีประโยชน์ซึ่งให้ไพพ์บรรทัดคำสั่งที่ง่ายไปยัง R คุณจำเป็นต้องใช้ littler เพื่อรันแอพมันวาวผ่านสคริปต์หรือไม่? รายละเอียดเพิ่มเติมสามารถพบได้ในคำถามนี้
R CMD BATCH
แย่มาก สิ่งใด แต่ที่ ...
R CMD INSTALL -l ~/R/lib-dev
นี่ไม่ได้ตอบคำถามโดยตรง แต่อาจมีบางคนที่ท้ายเพราะพวกเขาต้องการเรียกใช้ oneliner ของ R จากเทอร์มินัล ตัวอย่างเช่นหากคุณต้องการติดตั้งแพ็กเกจที่หายไปและออกจากโปรแกรม oneliner นี้จะสะดวกมาก ฉันใช้มันบ่อยครั้งเมื่อฉันพบว่าฉันพลาดแพ็คเกจบางอย่างและฉันต้องการติดตั้งในที่ที่ฉันต้องการ
ในการติดตั้งไปยังตำแหน่งเริ่มต้น:
R -e 'install.packages(c("package1", "package2"))'
ในการติดตั้งไปยังตำแหน่งที่ต้องการroot
สิทธิ์พิเศษ:
R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'
Rscript -e "getwd()"
ในเทอร์มินัล Rscript จะพิมพ์เอาต์พุตคำสั่งเท่านั้นไม่ใช่ข้อความ R startup ทั้งหมด
r -e "cat(getwd(),'\n')"
หากคุณติดตั้ง littler แล้ว ในคำตอบนี้ Dirk Eddelbuettel อธิบายความแตกต่างระหว่าง littler และ Rscript
R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
R -r 'options(warn=2); install...'
เพื่อหยุดการดำเนินการและรับรหัสข้อผิดพลาดที่ไม่เป็นศูนย์ในกรณีที่การติดตั้งล้มเหลว มิฉะนั้นinstall.packages
ข้อผิดพลาดใด ๆ ที่เป็นเพียงการเตือน
อีกวิธีหนึ่งในการเรียกใช้สคริปต์ R จากบรรทัดคำสั่งคือ:
R < scriptName.R --no-save
--save
หรือมีการ
ดูเพิ่มเติมวิธีที่ดีที่สุดในการใช้สคริปต์ R บนบรรทัดคำสั่ง (เทอร์มินัล) คืออะไร .
คุณต้องใช้?Rscript
คำสั่งเพื่อรันสคริปต์ R จากเทอร์มินัล
ตรวจสอบhttp://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html
ตัวอย่าง
## example #! script for a Unix-alike
#! /path/to/Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()
วิธีรัน Rmd ในคำสั่งด้วย knitr และ rmarkdown ด้วยคำสั่งหลายคำสั่งจากนั้นอัปโหลดไฟล์ HTML ไปยัง RPubs
นี่คือตัวอย่าง: โหลดสองไลบรารีและรันคำสั่ง R
R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'
R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'
R -e 'markdown::rpubsUpload("normalDev","NormalDevconJuly.html")'
อีกวิธีหนึ่งในการใช้ Rscript สำหรับระบบ * Unix คือการทดแทนกระบวนการกระบวนการชดเชย
Rscript <(zcat a.r)
# [1] "hello"
ซึ่งเห็นได้ชัดว่าทำเช่นเดียวกันกับคำตอบที่ได้รับการยอมรับ แต่สิ่งนี้ช่วยให้คุณสามารถจัดการและเรียกใช้ไฟล์ของคุณโดยไม่ต้องบันทึกพลังของบรรทัดคำสั่งเช่น:
Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"
คล้ายกับRscript -e "Rcode"
มันยังอนุญาตให้เรียกใช้โดยไม่บันทึกลงในไฟล์ ดังนั้นจึงสามารถใช้ร่วมกับสคริปต์ที่สร้าง R-code ได้เช่น:
Rscript <(echo "head(iris,2)")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
สำหรับเอกสารประกอบบางครั้งคุณต้องเรียกใช้สคริปต์เป็นsudo
:
sudo Rscript path/to/your/file.R