R 相当于 R 包的 python -m 模块



我有一个R脚本,可以在终端中执行Rscript app/myapp.R。R 脚本存储在 R 包项目中,以便我可以从文档、检查和单元测试工具中受益。

只是为了用户友好,我想知道是否有一种方法可以模仿 python 在模块内__main__.py的行为。

编辑 6/1/2020 :我实际上需要其他用户(未归为 R(使用该脚本。因此,一旦安装了软件包,找到脚本的完整路径对他们来说并不是一个真正的选择。


在python项目中,当我有以下包结构时:

mypackage
├── mymodule
│   ├── __init__.py
│   └── __main__.py
└── setup.py

我可以从终端中的任何文件夹中执行python -m mymodule,前提是该软件包确实已安装在我的python库中。该命令将执行mypackage/mymodule/__main__.py

我希望对 R 包具有相同的行为。假设 R 包mypackage已安装在我的 R 用户的库中。我希望能够从终端中的任何位置运行mypackage/app/myapp.R(实际上,我希望其他人能够安装软件包并运行应用程序而无需克隆存储库(。

我知道我能做到

Rscript app/myapp.R

但这只有在我cdpath/to/mypackage时才有效.我希望能够在终端的任何地方做如下的事情,前提是该软件包安装在 R 用户的库中

Rscript -m myapp

demo()似乎是为交互式会话制作的,我需要一个非交互式会话。

事实证明,有一个非常简单的解决方案使用R命令而不是Rscript。只需将脚本包装在包中的函数中,然后使用:

R -e "mypackage::myfunc()"

最新更新