Запуск r скриптов или команд с интерпретатором в unix для unix-layman
Я непрофессионал для unix и sofar Я использую R в окнах. Например, я печатаю следующее в моей сессии R (в R gui).
# this is a my funny example script
X <- 1:10
Y <- 21:30
plot(X, Y)
myfun <- function (x){
x1 <- x^0.2
return (x1)
}
myfun(X)
Как я могу добиться этого в оболочке unix, в двух ситуациях -
(1) непосредственно в командной строке через интерпретатор
(2) создание script и запуск script.
Пожалуйста, предоставьте шаг, считая, что я непрофессионал для unix.
Ответы
Ответ 1
Предполагая, что вы сохраните script в простом текстовом файле с именем so.R
, вы можете запустить его под Linux/Unix, введя R
в командной строке. После входа в R введите
source('so.R')
для выполнения script внутри среды R (предполагается, что файл so.R находится в том же каталоге, что и при выдаче этой команды).
Для запуска script из командной строки Linux/Unix используйте следующую команду:
R CMD BATCH so.R
Обратите внимание, что я получил график, чтобы показать, когда я запускал script внутри R, но из командной строки Linux он не отображается. Я подозреваю, что он быстро отображается, а затем уходит, поэтому будет команда R, которую вы должны посмотреть, чтобы сделать паузу после отображения графика.
Ответ 2
Я угадываю, как вы сформулировали свой вопрос, что вы, возможно, SSH'ed в Linux-машину? Или что вы установили Ubuntu, например, на свой обычный ноутбук/ПК.
Предположим, что это второй случай: откройте терминал и введите sudo apt-get install r-base
. Затем введите R
. Затем введите
X <- 1:10
Y <- 21:30
plot(X, Y)
myfun <- function (x){
x1 <- x^0.2
return (x1)
}
myfun(X)
Поскольку ваш вопрос о unix
versus linux
, а не R
, вы также можете попробовать http://unix.stackexchange.com. Можно многое сказать о различиях между linux и unix, но все, что вам, вероятно, нужно знать, это: загрузить Ubuntu, записать его на диск, затем перезагрузите компьютер с помощью диска на вашем CD-диске.
Надеюсь, что это поможет.
Ответ 3
Если ваша программа будет работать с одним набором данных, то простой-r может быть решением:
http://code.google.com/p/simple-r/
Он специально разработан для простого статистического анализа как части командной строки Linux. Например, если вы хотите построить некоторые данные, "r -p data.txt" выполнит задание; для получения коэффициента корреляции: 'r cor data.txt' будет достаточно.
Ответ 4
В приведенных ниже примерах показаны два способа запуска R-кода в оболочке script. И то и другое
примеры также будут определять функции без их выполнения, если скрипты
загружается в интерактивный сеанс R через функцию source().
Первый пример позволяет вам приводить аргументы так же, как и к любой другой оболочке
script, но не будет передавать дополнительные R-опции в R (поскольку Rscript дает
"--args" в R в качестве одного из аргументов).
Второй пример позволяет вам предоставить дополнительные R-параметры, но генерирует
(безвредных) предупреждений, если вы не дадите "--args" как один из script
аргументы. Эта версия лучше всего избегать, если у вас нет особых требований.
прототипы Rscript.r
#!/usr/bin/env Rscript
# Prototype R script for use at command line in Linux, Mac OS X, UNIX
# References:
# Manual "A Introduction to R", available via help.start() from the R Console
# Appendix "B.1 Invoking R from the command line" in "A Inroduction to R",
showArguments <- function(argv) {
print(argv)
0
}
if ( ! interactive() ) {
# set some error return codes
SCRIPT_ERROR <- 10 # see documentation for quit()
SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1
# Define ARGV as script path concatenated to script arguments
ARGV <- commandArgs(FALSE) # start with all the arguments given to R
scriptPath <- sub("^--file=", "", grep("^--file=", ARGV, value=TRUE)) [[1]]
ARGV <- c(scriptPath, commandArgs(TRUE))
if (length(ARGV) < 2) {
cat(file=stderr(), sep="",
"Usage: ", ARGV[[1]], " [ options ] item ...\n",
" Do something with item\n",
" See script for details\n")
quit(save="no", status=SCRIPT_ARG_ERROR)
}
quit(save="no", status=showArguments(ARGV))
}
прототипы shellscript.r
#!/usr/bin/env R --slave --vanilla --quiet -f
# Prototype R script for use at command line in Linux, Mac OS X, UNIX
# References:
# Manual "A Introduction to R", available via help.start() from the R Console
# Appendix "B.1 Invoking R from the command line" in "A Inroduction to R",
showArguments <- function(argv) {
print(argv)
0
}
if ( ! interactive() ) {
# set some error return codes
SCRIPT_ERROR <- 10 # see documentation for quit()
SCRIPT_ARG_ERROR <- SCRIPT_ERROR + 1
# Define ARGV as the arguments given to this script (after argument "-f")
ARGV <- commandArgs(FALSE) # start with all the arguments given to R
ARGV <- ARGV[(grep("-f", ARGV) [[1]] + 1):length(ARGV)]
if ( any(grepl("--args", ARGV) )) { # remove arguments intended only for R
ARGV <- c(ARGV[[1]], commandArgs(TRUE))
}
if (length(ARGV) < 2) {
cat(file=stderr(), sep="",
"Usage: ", ARGV[[1]], " [ R_options ] --args [ options ] item ...\n",
" Do something with item\n",
" See script for details\n")
quit(save="no", status=SCRIPT_ARG_ERROR)
}
quit(save="no", status=showArguments(ARGV))
}