Как запустить R-сценарий из командной строки Windows? [Дубликат]

355
задан epo3 31 March 2016 в 09:10
поделиться

7 ответов

Если вы хотите, чтобы вывод печатался на терминал, лучше использовать Rscript

Rscript a.R

. Обратите внимание, что при использовании R CMD BATCH a.R вместо перенаправления вывода на стандартный вывод и отображение на терминале a будет создан новый файл с именем .Rout.

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

Если вы действительно хотите использовать способ ./a.R вызова сценария, вы можете добавить соответствующий #! в начало скрипта

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

sayHello()

Также я буду замечать, что если вы работаете в системе * unix, то есть полезный пакет littler , который обеспечивает легкий путь к командной строке R.

512
ответ дан Dason 20 August 2018 в 17:39
поделиться
  • 1
    Без #! ваша командная строка пытается запустить его как сценарий командной строки, используя тот же интерпретатор, который интерпретирует ваши команды. Он не знает, что он должен быть R, даже если файл заканчивается суффиксом .R или .r. #! сообщает командной строке, какой язык содержится в файле. – Spacedman 19 August 2013 в 07:54
  • 2
    На протяжении многих лет я сталкивался с несколькими вопросами и мог ссылаться на Littler и Rscript. Главное - сказать людям, как и вы, что R CMD BATCH ужасно. Все, кроме этого ... – Dirk Eddelbuettel 18 January 2015 в 03:27
  • 3
    @Dason Я также работаю с R-скриптом, и я пытаюсь выполнить R-скрипт из Java-программы, и я вижу некоторую ошибку. Вот мой вопрос . Посмотрите, сможете ли вы помочь. Я использую ваш пример функции hello, чтобы сделать его простым. – user1950349 16 September 2015 в 22:23
  • 4
    Я должен добавить примечание о rscript, не загружая пакет методов – Dason 6 May 2018 в 13:12
  • 5
    Почти пять лет и 500 лет назад ... и, наконец, я получил первый ответ на этот ответ. Ницца. – Dason 29 June 2018 в 15:51

Это не отвечает на вопрос напрямую. Но кто-то может оказаться здесь, потому что они хотят запустить oneliner R из терминала. Например, если вы просто хотите установить некоторые недостающие пакеты и выйти, этот oneliner может быть очень удобным. Я использую его много, когда вдруг узнаю, что мне не хватает некоторых пакетов, и я хочу установить их туда, где я хочу.

R -e 'install.packages(c("package1", "package2"))' # install to default location. 
sudo R -e 'install.packages(c("package1", "package2"), lib="/usr/local/lib/R/site-library")' # install to location that requires root. 
68
ответ дан Bendt Lizzy Young 20 August 2018 в 17:39
поделиться
  • 1
    Для запуска команды вы также можете использовать Rscript -e "getwd()" в терминале. Rscript выводит только вывод команды, а не полное сообщение о запуске R. – Paul Rougieux 30 December 2015 в 09:55
  • 2
    Вы также можете использовать r -e "cat(getwd(),'\n')", если у вас установлен littler. В этот ответ Дирк Эддельбуэттель объясняет разницу между littler и Rscript. – Paul Rougieux 30 December 2015 в 10:15
  • 3
    Почему бы не сделать это независимым вопросом и ответом? Это полезно. – Nikos Alexandris 5 August 2016 в 15:54
  • 4
    Спасибо, что предвосхитил мою проблему! Мне нужно еще одно: R -e 'install.packages("package", repos="http://cran.us.r-project.org")' – Erin 18 October 2016 в 06:22
  • 5
    Для остановки выполнения и получения ненулевого кода ошибки следует использовать R -r 'options(warn=2); install...' в случае сбоя установки. В противном случае любые ошибки install.packages являются только предупреждениями. – rvernica 18 January 2017 в 17:41

Только для документации. Иногда вам нужно запустить скрипт как sudo:

sudo Rscript path/to/your/file.R
1
ответ дан Cro-Magnon 20 August 2018 в 17:39
поделиться

Еще один способ запуска R-скрипта из командной строки:

R < scriptName.R --no-save  

или с помощью --save.

См. также . Каков наилучший способ использовать сценарии R в командной строке (терминал)? .

28
ответ дан nbro 20 August 2018 в 17:39
поделиться

Еще один способ использования Rscript для * Unix-систем - Замена процесса .

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

Который, очевидно, делает то же самое, что и принятый ответ, но это позволяет вам манипулировать и запустите файл без сохранения его в командной строке, например:

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

Подобно Rscript -e "Rcode", он также позволяет запускать без сохранения в файл. Поэтому его можно использовать в сочетании со сценариями, которые генерируют R-код, например ::

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
0
ответ дан Sebastian Müller 20 August 2018 в 17:39
поделиться

Как запустить Rmd в команде с knitr и rmarkdown несколькими командами, а затем загрузить файл HTML в RPubs

Вот пример: загрузить две библиотеки и запустить команду R

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

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'
8
ответ дан Shicheng Guo 20 August 2018 в 17:39
поделиться

Вам нужна команда ?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()
16
ответ дан thelatemail 20 August 2018 в 17:39
поделиться
  • 1
    Я не понял, что я буду делать с этим кодом? – Sait 19 August 2013 в 05:57
  • 2
    Это был всего лишь пример того, как вы пишете / запускаете скрипт R, в вашем файле добавьте #! / Path / to / rscript, а затем chmod + x & lt; ваш скрипт.r & gt; и ./<your script.r & gt; – Mehul Rathod 19 August 2013 в 05:59
Другие вопросы по тегам:

Похожие вопросы: