【问题标题】:R equivalent of python -m module for an R packageR 等效于 R 包的 python -m 模块
【发布时间】:2019-08-31 12:16:13
【问题描述】:

我有一个 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 和 python 的人。但是这个问题已经在这里 7 个小时没有答案了,所以你应该考虑详细描述它的确切含义:“模仿 python 在模块内的 main.py 的行为” ,以及为什么添加到 myapp.r 的完整路径不能令人满意。
  • 谢谢,我编辑了问题,在最初的问题下方添加了一个详细的问题
  • @Romain 看看这个:github.com/klmr/modules.

标签: python r r-package python-packaging


【解决方案1】:

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

R -e "mypackage::myfunc()"

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2015-08-04
    • 2022-03-03
    • 2021-12-29
    • 2013-04-26
    相关资源
    最近更新 更多