我运行Windows批处理文件(.bat)
path_to_Rscript.exe file.R parameter1 parameter2 parameter3
在名为file.R
在file.R
中,我使用
commandArgs(trailingOnly = TRUE)
ABC <- args[1]
DEF <- args[2]
GHI <- args[3]
如果没有parameter2
,则仅调用
path_to_Rscript.exe file.R parameter1 parameter3
如何确保parameter3
未分配给DEF
?
到目前为止,我使用%%
作为占位符,但我不确定这是否是一种常见方法。
是否存在空参数的常规占位符?
答案 0 :(得分:2)
没有一般的“no arg”占位符,这取决于程序。
答案是,如果没有一些假设,你无法确保p3没有被分配到DEF,即,如果你只有两个参数,那么它们总是会成为ABC和GHI。在这种情况下,您检查commandArgs的长度并相应地进行调整 - 这是一个非常狭窄的解决方案。
如果你想使用可选的位置参数(这通常是一个坏主意),他们必须在最后,然后你真的只得到一个你现在面对的相同的原因。
摆脱这个难题的最好方法是使用docopt。如果你不能使用docopt,那么你就无法实现命令行解析器的实现,这是一个普遍解决的问题。