1
我正在开发包含命令行界面的R包。在构建包时,我想避免解析命令行参数(构建标志),因为我的命令行参数解析器不能识别这些与构建相关的参数并产生错误。如何在构建R包时避免分析命令行参数?
为了解决这个问题,我目前使用的方法在我的构建标志试图解析参数之前硬编码到一个if语句:
if (length(commandArgs(trailingOnly = TRUE)) > 0 &&
!(grepl("--no-multiarch", commandArgs(trailingOnly = TRUE)))) {
argv <- GetCmdlineArguments()
DoStuff(argv$parsed.argument)
}
我还没有试验过的另一种方法还包括将参数解析放在一个不同的R文件中,该文件通过.Rbuildignore
被构建忽略。但是,这会导致不利的情况,即每个具有命令行界面的R文件都需要额外的文件。
是否有更优雅和稳健的方式来检测程序包是否正在构建,而不是从用户的命令行实际执行?
谢谢。我已经在做几乎相同了。我通过'Rscript'从Python程序中调用包的R脚本,被调用的R脚本通过['argparser'](https://cran.r-project.org/package=argparser)执行参数解析。总结一下,我应该将参数解析分离到位于'inst/scripts /'下的文件吗? – tuomastik
在“inst/scripts /”下移动命令行参数解析解决了问题,并使一切变得清晰。非常感激。 – tuomastik