R komut dosyasını komut satırından çalıştırma


Yanıtlar:


671

Çıktının terminale yazdırılmasını istiyorsanız, Rscript kullanmak en iyisidir

Rscript a.R

Not kullanırken o R CMD BATCH a.Ryerine standart dışı çıkış yönlendirme ve a.Rout denilen terminali yeni bir dosya üzerinde görüntüleme oluşturulmuş olacağını.

R CMD BATCH a.R
# Check the output
cat a.Rout

Rscript kullanımı hakkında dikkat edilmesi gereken bir diğer şey, methodspaketi varsayılan olarak yüklememesi ve karışıklığa neden olabilmesidir. Bu nedenle, yöntemlerin sağladığı herhangi bir şeye güveniyorsanız, bunu komut dosyanızda açıkça yüklemek isteyeceksiniz.

./a.RSenaryoyu çağırmanın yolunu gerçekten kullanmak istiyorsanız senaryonun #!üstüne uygun bir şey ekleyebilirsiniz .

#!/usr/bin/env Rscript
sayHello <- function(){
   print('hello')
}

sayHello()

Ayrıca, bir * unix sistemi üzerinde çalışıyorsanız, R'ye kolay komut satırı borulaması sağlayan kullanışlı littler paketi olduğunu da not edeceğim. Daha fazla ayrıntı bu soruda bulunabilir .


28
# Olmadan! komut satırınız, komutlarınızı yorumlayan aynı yorumlayıcıyı kullanarak komut satırı komut dosyası olarak çalıştırmayı dener. Dosya bir .R veya .r sonekiyle bitse bile R olması gerektiğini bilmiyor. #! komut satırına dosyada hangi dilin bulunduğunu söyler.
Spacedman

4
Yıllar boyunca burada birkaç soru yakaladım ve hem littler hem de Rscript'i referans gösterebildim. Ana şey, insanlara, yaptığınız gibi, bunun R CMD BATCHkorkunç olduğunu söylemek . Bundan başka bir şey ...
Dirk Eddelbuettel

@Dason Ayrıca R komut dosyası ile çalışıyorum ve Java programından R komut dosyası yürütmeye çalışıyorum ve bazı hata görüyorum. İşte sorum . Yardım edip edemeyeceğinize bakın. Merhaba işlev örneğini şimdilik basitleştirmek için kullanıyorum.
user1950349

Komutun kendisinde kütüphane yolunu değiştirmenin bir yolu var mı? Benzer bir şeyR CMD INSTALL -l ~/R/lib-dev
mikemtnbikes

@mikemtnbikes Bildiğim kadarıyla değil. Komut dosyasının içindeki .libPaths () öğesini değiştirmek için her zaman bir şeyler eklenebilir. Ama Rscript için man sayfasında gösterilen böyle bir seçenek göremiyorum.
Dason

107

Bu soruya doğrudan cevap vermez. Ama birisi buraya gelebilir, çünkü terminalden bir R oneliner çalıştırmak istiyorlar. Örneğin, sadece bazı eksik paketleri yüklemek ve çıkmak istiyorsanız, bu oneliner çok uygun olabilir. Aniden bazı paketleri kaçırdığımı öğrendiğimde çok kullanıyorum ve bunları istediğim yere kurmak istiyorum.

  • Varsayılan konuma yüklemek için:

    R -e 'install.packages(c("package1", "package2"))'
  • rootAyrıcalıklar gerektiren bir konuma yüklemek için :

    R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' 

5
Bir komutu çalıştırmak Rscript -e "getwd()"için terminalde de kullanabilirsiniz . Rscript sadece komut çıkışını yazdırır, tam R başlatma mesajını yazdırmaz.
Paul Rougieux

r -e "cat(getwd(),'\n')"Littler yüklüyse de kullanabilirsiniz . Gelen bu cevap Dirk Eddelbuettel littler ve Rscript arasındaki farkı açıklar.
Paul Rougieux

2
Sorunumu beklediğiniz için teşekkür ederim! Bir şeye daha ihtiyacım vardı:R -e 'install.packages("package", repos="http://cran.us.r-project.org")'
Erin

4
Bir kullanmalıdır R -r 'options(warn=2); install...'yükleme başarısız olması durumunda sıfır olmayan bir hata kodu yürütme durdurmak ve almak için. Aksi takdirde, install.packageshatalar yalnızca uyarı niteliğindedir.
rvernica


21

İhtiyacın var ?RscriptTerminalden bir R komut dosyası çalıştırmak komuta .

Check out http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html

Misal

## 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()

Bu sadece bir R betiğini nasıl yazacağınızı / çalıştıracağınıza bir örnektir, dosyanıza #! / Path / to / rscript'i ekleyin ve sonra chmod + x <script.r> ve ./<your script.r>
Mehul Rathod

10

Rmd komutunda knitr ve rmarkdown komutunu birden çok komutla çalıştırma ve ardından RPub'lara HTML dosyası yükleme

İşte bir örnek: iki kitaplık yükleyin ve bir R komutu çalıştırın

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'

3
Kitaplığı yüklemeyi atlamanın daha kolay olacağını unutmayın; R -e 'markdown::rpubsUpload("normalDev","NormalDevconJuly.html")'
gregmacfarlane

3

* Unix sistemleri için Rscript'i kullanmanın başka bir yolu da İşlem Değiştirme'dir .

Rscript <(zcat a.r)
# [1] "hello"

Açıkçası kabul edilen cevapla aynı şeyi yapar, ancak bu, dosyanızı komut satırının gücünü kaydetmeden değiştirmenize ve çalıştırmanıza olanak tanır, örn:

Rscript <(sed s/hello/bye/ a.r)
# [1] "bye"

Buna benzer olarak Rscript -e "Rcode", bir dosyaya kaydetmeden çalışmasına izin verir. Bu nedenle, R kodu üreten komut dosyalarıyla birlikte kullanılabilir, örneğin:

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

3

Sadece dokümantasyon için, bazen komut dosyasını şu şekilde çalıştırmanız gerekir sudo:

sudo Rscript path/to/your/file.R

2
Ne zaman yapman gerekiyor?
simplegamer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.