Существует два способа запуска R-сценария из командной строки (Windows или оболочка Linux).
1) R CMD-путь R CMD BATCH, за которым следует имя R-сценария.Вывод этого также может быть передан в другие файлы по мере необходимости.
Этот способ, однако, немного устарел, и использование Rscript становится все более популярным.
2) Способ Rscript (поддерживается ввсе платформы. Следующий пример, однако, протестирован только для Linux) Этот пример включает в себя передачу пути файла CSV, имени функции и индекса атрибута (строки или столбца) файла CSV, с которым должна работать эта функция.
Содержимое файла test.csv x1, x2 1,2 3,4 5,6 7,8
Составьте R-файл «aR» с содержимым
#!/usr/bin/env Rscript
cols <- function(y){
cat("This function will print sum of the column whose index is passed from commandline\n")
cat("processing...column sums\n")
su<-sum(data[,y])
cat(su)
cat("\n")
}
rows <- function(y){
cat("This function will print sum of the row whose index is passed from commandline\n")
cat("processing...row sums\n")
su<-sum(data[y,])
cat(su)
cat("\n")
}
#calling a function based on its name from commandline … y is the row or column index
FUN <- function(run_func,y){
switch(run_func,
rows=rows(as.numeric(y)),
cols=cols(as.numeric(y)),
stop("Enter something that switches me!")
)
}
args <- commandArgs(TRUE)
cat("you passed the following at the command line\n")
cat(args);cat("\n")
filename<-args[1]
func_name<-args[2]
attr_index<-args[3]
data<-read.csv(filename,header=T)
cat("Matrix is:\n")
print(data)
cat("Dimensions of the matrix are\n")
cat(dim(data))
cat("\n")
FUN(func_name,attr_index)
Выполнение следующегов оболочке linux Rscript aR /home/impadmin/test.csv cols 1 дает вам следующее в командной строке /home/impadmin/test.csv cols 1 Матрица: x1 x2 1 1 2 2 3 4 3 5 6 47 8 Размеры матрицы равны 4 2 Эта функция выведет сумму столбца, индекс которого передан из обработки командной строки ... суммы столбцов 16
Выполнение следующего в оболочке linux Rscript aR / home / impadmin /test.csv rows 2 дает вам следующее в командной строке /home/impadmin/test.csv rows 2 Matrix is: x1 x2 1 1 2 2 3 4 3 5 6 4 7 8 Размеры матрицы равны 4 2 Эта функция выведет суммустроки, индекс которой передан из обработки командной строки ... суммы строк 7
Мы также можем сделать исполняемый скрипт R следующим образом (в linux) chmod a + x aR и снова запустить второй пример как ./aR /home/impadmin/test.csv строки 2
Это также должно работать для командной строки Windows ..