R-эквивалент модуля python -m для пакета R

У меня есть сценарий R, который можно выполнить в терминале с помощью Rscript app/myapp.R. Сценарий R хранится в проекте пакета R, поэтому я могу воспользоваться документацией, инструментами проверки и модульного тестирования.

Просто для удобства использования мне было интересно, есть ли способ имитировать поведение python __main__.py внутри модуля.

РЕДАКТИРОВАТЬ 01.06.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(), похоже, создан для интерактивных сеансов, а мне нужен неинтерактивный сеанс.


person Romain    schedule 31.08.2019    source источник
comment
Вполне возможно, что кто-то со знанием R и Python придет. Но этот вопрос был здесь в течение 7 часов без ответа, поэтому вам следует подумать о том, чтобы описать в мельчайших деталях, что именно это значит: имитировать поведение python для main.py внутри модуля и почему добавление полного пути к myapp.r было бы неудовлетворительным.   -  person IRTFM    schedule 31.08.2019
comment
Спасибо, я отредактировал вопрос, добавив подробный вопрос ниже исходного.   -  person Romain    schedule 02.09.2019
comment
@Romain Проверьте это: github.com/klmr/modules.   -  person teofil    schedule 03.09.2019


Ответы (1)


Как оказалось, было действительно простое решение с использованием команды R, а не Rscript. Просто заверните скрипт в функцию из пакета, а затем используйте:

R -e "mypackage::myfunc()"
person Romain    schedule 06.01.2020