运行 Rscript.exe 在带有可选参数的批处理文件上

Run Rscript.exe on batch file with optional arguments

我运行一个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

到目前为止,我使用 %% 作为占位符,但我不确定这是否是一种常见的方法。

是否有空参数的通用占位符?

没有通用的"no arg"占位符,这取决于程序。

答案是,如果没有一些假设,您无法确保 p3 未分配给 DEF,即,如果您只有两个参数,那么它们将始终是 ABC 和 GHI。在这种情况下,您检查 commandArgs 的长度并相应地进行调整 - 这是一个非常狭窄的解决方案。

如果你想使用可选的位置参数(这通常是个坏主意),它们必须放在最后,然后你真的只能得到一个,原因与你现在面临的相同。

解决这个难题的最好方法是使用 docopt。如果您不能使用 docopt,那么您将无法实现命令行解析器,这是一个通常已解决的问题。