构建 r 包时附加 python 脚本

Attaching python script while building r package

我还没有为我的任务找到一些 R 包(没有,相信我),但是 python 中有一个。所以我写了 python 脚本并在某些函数中使用了 reticulaye::py_run_file('my_script.py') 。但是在构建和安装之后,包找不到那个脚本。我应该把这个脚本放在哪里以便在直接从 package.json 安装后使用它?还有一件事,我需要安装 miniconda reticulate::install_miniconda()。有谁知道在 install.package 命令后自动安装它的方法吗?

通常非 R 代码进入 ./inst/python/your_script.py(同样适用于 JS 等)。 inst 文件夹中的任何内容都将原封不动地安装到包的根目录中。

要在您的包函数中调用这些文件,请使用类似:

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

参见:http://r-pkgs.had.co.nz/inst.html


对于你的第二个问题,你应该在安装任何东西之前提示用户,但你通常会在一个名为 .onLoad 的特殊函数中调用任何外部安装程序,参数为 libnamepkgname .这是调用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 文件中。