包括CLI工具作为R软件包的一部分

时间:2020-08-01 06:28:02

标签: r package command-line-interface

创建Python包时,可以使用entry_points的{​​{1}}参数创建“命令”(请参阅​​here)。我想知道创建R包时是否可以做同样的事情。

例如,运行后

setup

能够使用它会很好

install.packages("mypackage")

无需使用Rscript。 R包中是否可以有这样的入口点?

我在任何地方都找不到答案,但是作为参考,以下是部分解决此主题的资源:

Answer about turning a CLI into an R package - the opposite direction

Tutorial explaining how to run R code from the command line, but not how to install a CLI tool with an R package

CLI library - I couldn't find any instructions for installing via a package here

1 个答案:

答案 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程序包中只有后者是可以接受的。