Tôi có một tập tin, được gọi a.r
, nó có chmod
755,
sayHello <- function(){
print('hello')
}
sayHello()
Làm thế nào tôi có thể chạy nó thông qua dòng lệnh?
#!/usr/bin/env Rscript
Tôi có một tập tin, được gọi a.r
, nó có chmod
755,
sayHello <- function(){
print('hello')
}
sayHello()
Làm thế nào tôi có thể chạy nó thông qua dòng lệnh?
#!/usr/bin/env Rscript
Câu trả lời:
Nếu bạn muốn đầu ra in ra thiết bị đầu cuối, tốt nhất là sử dụng Rupcript
Rscript a.R
Lưu ý rằng khi sử dụng R CMD BATCH a.R
thay vì chuyển hướng đầu ra sang tiêu chuẩn và hiển thị trên thiết bị đầu cuối, một tệp mới có tên a.Rout sẽ được tạo.
R CMD BATCH a.R
# Check the output
cat a.Rout
Một điều khác cần lưu ý về việc sử dụng Rupcript là nó không tải methods
gói theo mặc định có thể gây nhầm lẫn. Vì vậy, nếu bạn đang dựa vào bất cứ điều gì mà phương thức cung cấp, bạn sẽ muốn tải nó một cách rõ ràng trong tập lệnh của mình.
Nếu bạn thực sự muốn sử dụng ./a.R
cách gọi tập lệnh, bạn có thể thêm phần thích hợp #!
vào đầu tập lệnh
#!/usr/bin/env Rscript
sayHello <- function(){
print('hello')
}
sayHello()
Tôi cũng sẽ lưu ý rằng nếu bạn đang chạy trên hệ thống * unix, có gói littler hữu ích cung cấp đường ống dòng lệnh dễ dàng đến R. Có thể cần phải sử dụng littler để chạy các ứng dụng sáng bóng thông qua tập lệnh? Thông tin chi tiết có thể được tìm thấy trong câu hỏi này .
R CMD BATCH
là khủng khiếp. Bất cứ điều gì khác ngoài điều đó ...
R CMD INSTALL -l ~/R/lib-dev
Điều này không trả lời câu hỏi trực tiếp. Nhưng ai đó có thể kết thúc ở đây vì họ muốn chạy một oneliner của R từ thiết bị đầu cuối. Ví dụ, nếu bạn chỉ muốn cài đặt một số gói bị thiếu và thoát, oneliner này có thể rất thuận tiện. Tôi sử dụng nó rất nhiều khi tôi đột nhiên phát hiện ra rằng tôi bỏ lỡ một số gói và tôi muốn cài đặt chúng vào nơi tôi muốn.
Để cài đặt đến vị trí mặc định:
R -e 'install.packages(c("package1", "package2"))'
Để cài đặt đến một vị trí yêu cầu root
đặc quyền:
R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'
Rscript -e "getwd()"
trong thiết bị đầu cuối. Rupcript sẽ chỉ in đầu ra lệnh chứ không phải thông báo khởi động R đầy đủ.
r -e "cat(getwd(),'\n')"
nếu bạn đã cài đặt littler. Trong câu trả lời này, Dirk Eddelbuettel giải thích sự khác biệt giữa littler và Rupcript.
R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
R -r 'options(warn=2); install...'
để tạm dừng việc thực thi và nhận mã lỗi khác không trong trường hợp cài đặt thất bại. Nếu không, bất kỳ install.packages
lỗi nào chỉ là cảnh báo.
Một cách nữa để chạy tập lệnh R từ dòng lệnh sẽ là:
R < scriptName.R --no-save
hoặc với --save
.
Xem thêm Cách tốt nhất để sử dụng tập lệnh R trên dòng lệnh (thiết bị đầu cuối) là gì? .
Bạn cần ?Rscript
lệnh để chạy tập lệnh R từ thiết bị đầu cuối.
Hãy xem http://stat.ethz.ch/R-manual/R-devel/l Library / utils / html / Revcript.html
Thí dụ
## 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()
Cách chạy Rmd trong lệnh với đan và đánh dấu lại bằng nhiều lệnh và sau đó Tải tệp HTML lên RPub
Dưới đây là một ví dụ: tải hai thư viện và chạy lệnh 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")'
Tuy nhiên, một cách khác để sử dụng Rupcript cho các hệ thống * Unix là Thay thế quy trình .
Rscript <(zcat a.r)
# [1] "hello"
Điều này rõ ràng giống như câu trả lời được chấp nhận, nhưng điều này cho phép bạn thao tác và chạy tệp của mình mà không lưu nó vào sức mạnh của dòng lệnh, ví dụ:
Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"
Tương tự như Rscript -e "Rcode"
nó cũng cho phép chạy mà không lưu vào một tập tin. Vì vậy, nó có thể được sử dụng cùng với các tập lệnh tạo mã R, ví dụ:
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
Chỉ để làm tài liệu, đôi khi bạn cần chạy tập lệnh như sudo
:
sudo Rscript path/to/your/file.R