Saya punya file, bernama a.r
, memiliki chmod
755,
sayHello <- function(){
print('hello')
}
sayHello()
Bagaimana saya bisa menjalankan ini melalui command-line?
#!/usr/bin/env Rscript
Saya punya file, bernama a.r
, memiliki chmod
755,
sayHello <- function(){
print('hello')
}
sayHello()
Bagaimana saya bisa menjalankan ini melalui command-line?
#!/usr/bin/env Rscript
Jawaban:
Jika Anda ingin hasilnya dicetak ke terminal, yang terbaik adalah menggunakan Rscript
Rscript a.R
Perhatikan bahwa ketika menggunakan R CMD BATCH a.R
itu alih-alih mengarahkan output ke standar keluar dan menampilkan pada terminal file baru yang disebut a.Rout akan dibuat.
R CMD BATCH a.R
# Check the output
cat a.Rout
Satu hal lain yang perlu diperhatikan tentang penggunaan Rscript adalah bahwa ia tidak memuat methods
paket secara default yang dapat menyebabkan kebingungan. Jadi, jika Anda mengandalkan apa pun yang disediakan metode, Anda ingin memuatnya secara eksplisit dalam skrip Anda.
Jika Anda benar-benar ingin menggunakan ./a.R
cara memanggil skrip, Anda dapat menambahkan yang sesuai #!
ke bagian atas skrip
#!/usr/bin/env Rscript
sayHello <- function(){
print('hello')
}
sayHello()
Saya juga akan mencatat bahwa jika Anda menjalankan sistem * unix ada paket littler yang berguna yang menyediakan pemipaan baris perintah mudah ke R. Mungkin perlu menggunakan littler untuk menjalankan aplikasi yang mengkilap melalui skrip? Rincian lebih lanjut dapat ditemukan dalam pertanyaan ini .
R CMD BATCH
mengerikan. Apa pun kecuali itu ...
R CMD INSTALL -l ~/R/lib-dev
Ini tidak menjawab pertanyaan secara langsung. Tetapi seseorang mungkin berakhir di sini karena mereka ingin menjalankan oneliner R dari terminal. Misalnya, jika Anda hanya ingin menginstal beberapa paket yang hilang dan berhenti, oneliner ini bisa sangat nyaman. Saya sering menggunakannya ketika tiba-tiba mengetahui bahwa saya kehilangan beberapa paket, dan saya ingin menginstalnya ke tempat yang saya inginkan.
Untuk menginstal ke lokasi default:
R -e 'install.packages(c("package1", "package2"))'
Untuk menginstal ke lokasi yang memerlukan root
hak istimewa:
R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")'
Rscript -e "getwd()"
terminal. Rscript hanya akan mencetak output perintah dan bukan pesan startup R penuh.
r -e "cat(getwd(),'\n')"
jika Anda menginstal littler. Dalam jawaban ini Dirk Eddelbuettel menjelaskan perbedaan antara littler dan Rscript.
R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
R -r 'options(warn=2); install...'
untuk menghentikan eksekusi dan mendapatkan kode kesalahan tidak nol jika instalasi gagal. Kalau tidak, install.packages
kesalahan apa pun hanyalah peringatan.
Satu lagi cara menjalankan skrip R dari baris perintah adalah:
R < scriptName.R --no-save
atau dengan --save
.
Lihat juga Apa cara terbaik untuk menggunakan skrip R pada baris perintah (terminal)? .
Anda memerlukan ?Rscript
perintah untuk menjalankan skrip R dari terminal.
Lihat http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html
Contoh
## 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()
Cara menjalankan perintah Rmd dengan knitr dan rmarkdown dengan beberapa perintah, lalu Unggah file HTML ke RPubs
Berikut ini contohnya: memuat dua pustaka dan menjalankan perintah 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")'
Namun cara lain untuk menggunakan Rscript untuk * sistem Unix adalah Proses Substitusi .
Rscript <(zcat a.r)
# [1] "hello"
Yang jelas melakukan hal yang sama dengan jawaban yang diterima, tetapi ini memungkinkan Anda untuk memanipulasi dan menjalankan file Anda tanpa menyimpannya kekuatan dari baris perintah, misalnya:
Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"
Mirip Rscript -e "Rcode"
dengannya juga memungkinkan untuk berjalan tanpa menyimpan ke dalam file. Jadi itu bisa digunakan bersamaan dengan skrip yang menghasilkan R-code, misal:
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
Hanya untuk dokumentasi, terkadang Anda perlu menjalankan skrip sebagai sudo
:
sudo Rscript path/to/your/file.R