У мене є файл, званий 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-повідомлення про запуск.
r -e "cat(getwd(),'\n')"
якщо встановлено менше. У цій відповіді Дірк Еддельбуеттель пояснює різницю між 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 в команді Knr і 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-систем - це Process Substitution .
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
Тільки для документації, іноді потрібно запустити скрипт як sudo
:
sudo Rscript path/to/your/file.R