У меня есть файл, называемый a.r
, он имеет chmod
755,Run R скрипт из командной строки
sayHello <- function(){
print('hello')
}
sayHello()
Как я могу запустить это с помощью командной строки?
У меня есть файл, называемый a.r
, он имеет chmod
755,Run R скрипт из командной строки
sayHello <- function(){
print('hello')
}
sayHello()
Как я могу запустить это с помощью командной строки?
Если вы хотите, чтобы вывод на печать на терминале, лучше использовать Rscript
Rscript a.R
Обратите внимание, что при использовании R CMD BATCH a.R
что вместо перенаправление вывода на стандартный вывод и отображение на терминале будет создан новый файл с именем .Rout.
R CMD BATCH a.R
# Check the output
cat a.Rout
Если вы действительно хотите использовать ./a.R
способ вызова скрипта можно добавить соответствующий #!
в верхней части сценария
#!/usr/bin/env Rscript
sayHello <- function(){
print('hello')
}
sayHello()
Я также отметить, что если вы работаете на a * unix существует полезный пакет littler, который обеспечивает простую линию командной строки для R.
Без #! ваша командная строка пытается запустить его как сценарий командной строки, используя тот же интерпретатор, который интерпретирует ваши команды. Он не знает, что он должен быть R, даже если файл заканчивается суффиксом .R или .r. #! сообщает командной строке, какой язык содержится в файле. – Spacedman
Что, ничего о [littler] (http://dirk.eddelbuettel.com/code/littler.html)?
Я запомнил несколько вопросов здесь на протяжении многих лет и могу ссылаться на Littler и Rscript. Главное - сказать людям, как и вы, что «R CMD BATCH» ужасно. Все, кроме этого ... –
Вам нужна команда ?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()
Я не понял, что я буду делать с этим кодом? – Sait
Это был всего лишь пример того, как вы пишете/запускаете скрипт R, в свой файл добавьте #!/Path/to/rscript, а затем chmod + x <ваш скрипт.r> и ./
Еще один способ запуска сценария R из командной строки:
R < scriptName.R --no-save
или --save
найдено here
Это не отвечает на вопрос напрямую. Но кто-то может оказаться здесь, потому что он/она хочет запустить 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.
Для запуска команды вы также можете использовать 'Rscript -e 'getwd()" 'в терминале. Rscript выводит только вывод команды, а не полное сообщение о запуске R. –
Вы также можете использовать 'r -e 'cat (getwd(),' \ n ')", если у вас установлен littler. В [этом ответе] (http://stackoverflow.com/a/3205489/2641825) Дирк Эддельбуэттель объясняет разницу между littler и Rscript. –
Почему бы не сделать это независимым вопросом и ответом? Это полезно. –
Как запустить RMD в команде с knitr и 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 ")'' – gregmacfarlane
Еще один способ использования 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
Я не очень разбираюсь в этом, но я не думаю, что вы можете запускать R-скрипты как есть. Разве вам не нужно было бы вызывать саму программу R и сказать ей запустить ваш файл 'a.r'? Вы не сказали, что у вас есть, либо я предполагаю некоторый вариант * nix, но вы можете быть явным. – thelatemail
Разве это не 'R CMD BATCH'? – thelatemail
@thelatemeail Это Ubuntu. – Sait