Обычно код без 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.