Прикрепление скрипта python при сборке пакета r - PullRequest
1 голос
/ 10 февраля 2020

Я не нашел какой-то пакет R (нет никого, поверьте мне) для моих задач, но он есть в python. Поэтому я написал python скрипт и использовал reticulaye::py_run_file('my_script.py') в некоторых функциях. Но после сборки и установки пакет не может найти этот скрипт. Где я должен поставить этот скрипт, чтобы использовать его после установки прямо из пакета. И еще, мне нужно установить Miniconda reticulate::install_miniconda(). Кто-нибудь знает способ его автоматической установки после команды install.package?

1 Ответ

2 голосов
/ 10 февраля 2020

Обычно код без R входит в ./inst/python/your_script.py (аналогично для JS, et c). Все, что находится в папке inst, будет установлено в каталог root вашего пакета без изменений.

Чтобы вызвать эти файлы в функциях вашего пакета, используйте что-то вроде:

reticulate::py_run_file(system.file("your_script.py", package = "yourpkg"))

См .: http://r-pkgs.had.co.nz/inst.html


Для вашего Второй вопрос: вы должны запросить пользователя перед установкой чего-либо, но вы обычно вызываете любые внешние установщики в специальной функции с именем .onLoad с аргументами libname и pkgname. Эта функция автоматически выполняется при вызове library(yourpkg).

.onLoad <- function(libname, pkgname) {
  user_permission <- utils::askYesNo("Install miniconda? downloads 50MB and takes time)

  if (isTRUE(user_permission)) {
    reticulate::install_miniconda()
    } else {
    message("You should run `reticulate::install_miniconda() before using this package")
   }
}

. Вы можете поместить эту функцию в любой из файлов пакета R.

...