创建Python包时,可以使用entry_points
的{{1}}参数创建“命令”(请参阅here)。我想知道创建R包时是否可以做同样的事情。
例如,运行后
setup
能够使用它会很好
install.packages("mypackage")
无需使用Rscript。 R包中是否可以有这样的入口点?
我在任何地方都找不到答案,但是作为参考,以下是部分解决此主题的资源:
Answer about turning a CLI into an R package - the opposite direction
CLI library - I couldn't find any instructions for installing via a package here
答案 0 :(得分:0)
您可以编写脚本并将其放在程序包的inst/scripts
目录中;它们将与软件包一起安装到软件包目录中的scripts
中。您的脚本可能类似于?Rscript
中的类似Unix的示例:
#! /path/to/Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
res <- try(install.packages(args))
if(inherits(res, "try-error")) q(status=1) else q()
在Windows上,它需要具有不同的格式,因为那里的普通shell不支持#!
脚本。
您可以编写代码以将scripts
目录(即system.file("scripts", package = "mypackage")
的结果)放置在用户的PATH
上,但这仅适用于当前R会话,并且仅可以从R启动的命令中看到。您可以向用户编写指令以将其自己放在用户的PATH
上。在CRAN程序包中只有后者是可以接受的。