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

R equivalent of python -m module for an R package

我有一个 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

但这只有在我 cd 进入 path/to/mypackage 时才有效。如果软件包安装在 R 用户的库中 .

,我希望能够从终端中的任何位置执行如下所示的操作
Rscript -m myapp

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

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

R -e "mypackage::myfunc()"