Можно ли указать параметры командной строки для R-скрипта в RStudio?
Я хочу использовать RStudio для редактирования R-скрипта с параметрами командной строки, например,
my_rscript --dataset mydataset
а затем, чтобы прочитать значение optiion в переменную R, скажем,dataset
, например, используя optparse
библиотека.
однако я не смог найти, где acommand line может быть предоставлена в RStudio, чтобы я мог использовать функцию "Source on save". Вместо этого, я должен записать все параметры программы в самой программе:
dataset <- "mydataset"
что требует изменения текста скрипта каждый раз мне нужно указывать разные данные.
кто-нибудь знает, как предоставить информацию в командной строке?
6 ответов
Я знаю, что этот вопрос старый, и ссылка ниже старая, но она отвечает на вопрос. Нет, невозможно (или не было по состоянию на 29 января 2012 года) получить доступ к аргументам командной строки из RStudio.
пока я делаю это так:
Откройте новое окно редактирования нового Rscript. Если я хочу сохранить его, я могу сохранить и назвать его чем-то вроде: test_myscript.R
Это содержание test_myscript.R
:
debug(getopt) # suppose I want to debug 'getopt' function in 'myscript.R'
system("myscript.R -a -b -c")
# Debug process start after this.
# Check ?browser for help about navigating inside browser
вы можете вызвать свои программы, используя Rscript programname.r arg1 arg2 arg3
. Аргументы передаются в commandArgs
, поэтому верно следующее:
Rscript programname.r F N 32
> args <- commandArgs(trailingOnly=TRUE)
> args[1]
[1] F
> args[2]
[1] N
> args[3]
[1] 32
Это сработало для меня: Мой Rscript выглядит следующим образом:
args <- commandArgs()
print(paste0("args:", args))
print(paste0("args[1]:",args[1]))
print(paste0("args[2]:",args[2]))
print(paste0("args[3]:",args[3]))
print(paste0("# of args:",length(args)))
'
чтобы эмулировать ввод командной строки, который я бы использовал с Rscript, я ввел это в RStudio:
commandArgs <- function() c("AMZN", 10, 200)
который дал желаемый результат:
[1] "args:AMZN" "args:10" "args:200"
[1] "args[1]:AMZN"
[1] "args[2]:10"
[1] "args[3]:200"
[1] "# of args:3"
если вы заинтересованы в использовании, например, argparser и продолжить разработку / анализ в интерактивном режиме с помощью Rstudio, вы можете использовать следующую работу:
- написать парсер командной строки
my_rscript
и создать объектargs
, который содержит все разобрано ввода. - добавить строку, которая спасает
args
объект в файл. - Run
my_rscript
из командной строки и укажите интересующие аргументы. - загрузить
args
объект из файла в Rstudio и продолжить интерактивно
пример:
library("argparser")
parser <- arg_parser(description='Process commandline arguments')
parser <- add_argument(parser, arg="--dataset", type="character", help = "Dataset argument")
args = parse_args(parser)
args_file = "tempArgObjectFile.rds"
saveRDS(args, args_file); print(args); quit(); #comment this after creating args_file
args = readRDS(args_file) #use this to load during interactive development
Это действительно старый, но я наткнулся на него, пытаясь сделать то же самое, и я закончил тем, что просто попробовал следующее, и хорошо и быстро, если люди хотят попробовать (вероятно, полезно только для команд, которые имеют пару простых args, хотя):
учитывая мой Rscript, который в настоящее время начинается:
args <- commandArgs(TRUE)
df <- read.csv(args[1], sep=",", check.names=FALSE, row.names = 1)
.
. # Do some analysis and plotting etc.
.
если бы я хотел эмулировать командную строку, которую в противном случае получил бы Rscript, вы можете сделать args
вектор вверх "вручную":
args <- c("/path/to/my/inputfile.csv")
затем args[1]
принимает то же значение, что и всегда. и я просто запускаю все остальное в скрипте, выделяя и выполняя в RStudio.