加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

通过library()/ Description文件在R包中使用依赖项

发布时间:2020-12-14 04:57:07 所属栏目:百科 来源:网络整理
导读:我正在写一个R包,它有几个其他包的依赖,其中一些在CRAN中可用,而其他包是自制的. 根据帮助,库(“my_package”)将在我之前安装它时加载包的名称空间,即install.package(“my_package”). 然而,一旦我安装了软件包,我就可以通过my_package :: my_function()使
我正在写一个R包,它有几个其他包的依赖,其中一些在CRAN中可用,而其他包是自制的.

根据帮助,库(“my_package”)将在我之前安装它时加载包的名称空间,即install.package(“my_package”).

然而,一旦我安装了软件包,我就可以通过my_package :: my_function()使用已安装但未加载的软件包的所有功能,所以如果我的软件包有依赖项,那么除了将它们添加到DESCRIPTION文件中之外:

Imports:
    dplyr,my_package2,ggvis,

在包文件夹的根目录中.
我是否必须通过library()加载新包的依赖项,否则最终用户如果未在其计算机上安装,则会看到错误,因为在Imports部分中指定了所需的包?

解决方法

不,用户不必加载my_package中的函数使用的包.

您在Imports下列出了一个包的事实:在DESCRIPTION文件中意味着在安装my_package期间,R将检查您的系统上是否有此软件包可用.这意味着my_package中的函数可以使用:: notation来使用这些包中的函数,如您所建议的那样.

使用:: notation是从其他包引用函数的推荐方法,但也有其他选项:

>为了在my_package中使用dplyr可以访问所有函数而不使用::,可以将import(dplyr)添加到NAMESPACE文件中.如果您使用包中的许多功能,这很方便.
>如果您打算仅使用dplyr中的函数select,则可以将importFrom(select,dplyr)添加到NAMESPACE文件中.
>您还可以将包添加到Depends:下的DESCRIPTION文件中.这意味着当您使用库(my_package)时,包将加载到全局环境中.这几乎不是一个好的解决方案.

依赖关系的一般概念是R是my_package将具有它依赖于加载的包的“它自己的版本”.因此,您可以随时确保使用dplyr软件包中的函数select(),如您所愿.例外是使用Depends:绕过这个系统.在这种情况下,my_package将在全局环境中查找函数,如果有人在全局环境中定义了一些名为select()的函数,my_package将使用此函数,您将获得意外结果.

例1:

说明文件:

Imports:
    dpylr

my_package中的一些函数:

my_fun <- function(...) {
    dplyr::mutate(...) %>%
    dplyr::select(1:3)
}

例2:

说明文件:

Imports:
    dpylr

NAMESPACE文件:

import(dplyr)

my_package中的一些函数:

my_fun <- function(...) {
    mutate(...) %>%
    select(1:3)
}

例3:

说明文件:

Imports:
    dpylr

NAMESPACE文件:

importFrom(select,dplyr)

my_package中的一些函数:

my_fun <- function(...) {
    dpylr::mutate(...) %>%
    select(1:3)
}

您可以在Web上找到有关如何处理R包中的依赖关系的更详细说明.例如,以下内容非常有用:

> On the DESCRIPTION file
> On the NAMESPACE file

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读