gpt4 book ai didi

R 包构建 : How to import a function from a package not on CRAN

转载 作者:行者123 更新时间:2023-12-03 14:34:13 26 4
gpt4 key购买 nike

问题

我正在尝试将非 CRAN 存储库中的函数导入到我的包中。
我知道 R 在 CRAN 中搜索 Imports: 中声明的任何包领域DESCRIPTION文件。有没有办法,例如,导入 function来自“notoncran”包,它仅在 Github(或其他一些非 CRAN 地方)上。

不希望的解决方法:

我已经找到了一个不受欢迎的解决方法,其中包括绕过 Imports:通过将我的函数定义为以下内容来完全字段:

myfun <- function(a,b){
x <- require(notoncran)
if(!x){
print("installing notoncran because you don't have it...")
devtools::install_github('repo/withpackage')
require(notoncran)
}
...
}

原则上我不喜欢这个想法,因为您在未经用户同意的情况下在某种程度上安装了一个/几个包,来自潜在的不受监管(理论上危险)的来源。这也在一定程度上降低了功能的可读性,因为将功能与管理业务进行了权衡。最后,此方法最终需要运行 require()library() ,将包的所有功能都扔到用户的命名空间中,这绝不是理想的。

感谢您对此的任何帮助。

最佳答案

一个 super 简单的技巧是在我们的 DESCRIPTION 中添加一个“ Remote ”字段文件指定我们在 Github 上的目标包的 username/package_name 目标。

Remotes:
github::User/PackageNotOnCRAN
Import:
PackageNotOnCRAN
Suggests:
devtools,
testthat
这不仅适用于 github ( github:: ) 上的文件,而且适用于 git、bitbucket、本地包等。
More information , how I figured it out .

关于R 包构建 : How to import a function from a package not on CRAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43773066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com