Запустите R script из командной строки

У меня есть файл, называемый a.r, он имеет chmod из 755,

sayHello <- function(){
   print('hello')
}

sayHello()

Как я могу запустить это через командную строку?

Ответ 1

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

Rscript a.R

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

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

Еще одна вещь, которую стоит отметить при использовании Rscript, это то, что он не загружает пакет methods по умолчанию, что может вызвать путаницу. Поэтому, если вы полагаетесь на все, что предоставляют методы, вы захотите явно загрузить это в свой скрипт.

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

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

sayHello()

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

Ответ 2

Это не отвечает на вопрос напрямую. Но кто-то может оказаться здесь, потому что он хочет запустить терминал 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. 

Ответ 4

Вам нужна команда ?Rscript для запуска R script с терминала.

Отъезд 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()

Ответ 5

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

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

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

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

Ответ 6

Еще один способ использования 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

Ответ 7

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

sudo Rscript path/to/your/file.R