Обязательно ли использовать аргументы из 1 буквы в optparse? - PullRequest
0 голосов
/ 21 января 2020

Я использую optparse для анализа аргументов в R. Затем я вызываю код R из командной строки и передаю аргументы следующим образом Rscript myscript.R -a xx -b yy. Это работает хорошо, но меня немного смущает использование однобуквенных аргументов, таких как -a, -b, et c. В моем случае у меня есть 20 аргументов ... Очень неудобно назначать букву каждому аргументу.

make_option(c("-o", "--output_path"), type="character"),
make_option(c("-t", "--data_type"), type="character")

Если я использую полные имена --output_path из командной строки, я получаю ошибку.

Как решить эту проблему?

1 Ответ

1 голос
/ 21 января 2020

У меня нет проблем с использованием коротких или длинных имен. Когда я указываю обе версии, я могу вызвать либо

toargs <- function(x) strsplit(x, " ")[[1]][-(1:2)]
option_list <- list(make_option(c("-o", "--output_path"), type="character"))
parser <- OptionParser("test", option_list)

parse_args(parser, toargs("Rscript myscript.R --output_path xxx"))
# $output_path
# [1] "xxx"
# $help
# [1] FALSE

parse_args(parser, toargs("Rscript myscript.R -o xxx"))
# $output_path
# [1] "xxx"
# $help
# [1] FALSE

, и он работает только с длинной версией

option_list <- list(make_option("--output_path", type="character"))
parser <- OptionParser("test", option_list)

parse_args(parser, toargs("Rscript myscript.R --output_path xxx"))
# $output_path
# [1] "xxx"
# $help
# [1] FALSE

parse_args(parser, toargs("Rscript myscript.R -o xxx"))
# Error : short flag "o" is invalid

Однобуквенные аргументы не обязательны; они не являются обязательными. Но у вас должно быть длинное имя.

Проверено с optparse_1.6.4

...