gpt4 book ai didi

r - 使用 roxygen2 导入两个同名函数

转载 作者:行者123 更新时间:2023-12-04 16:52:14 25 4
gpt4 key购买 nike

我是 CRAN 包的维护者,加载时收到以下消息:

* checking whether package ‘qdap’ can be installed ... [10s/10s] WARNING
Found the following significant warnings:
Warning: replacing previous import ‘annotate’ when loading ‘NLP’
Warning: replacing previous import ‘rescale’ when loading ‘scales’

因为我使用 plotrix 和 scales 包以及 NLP 和 ggplot 包。它们具有以下功能 rescaleannotate共同点。这会导致最新的 CRAN 检查出现严重警告。所以我决定“修复”它。

我做了这样的描述:
Package: qdap
Type: Package
Title: Bridging the gap between qualitative data and quantitative analysis
Version: 1.0.0
Date: 2013-06-26
Author: Tyler Rinker
Maintainer: Tyler Rinker <tyler.rinker@gmail.com>
Depends:
R (>= 3.0.0),
ggplot2 (>= 0.9.3.1),
gdata,
grid,
Imports:
NLP,
openNLP,
plotrix,
scales,
LazyData: TRUE
Description: Stuff
License: GPL-2

并将其添加到一些 .R 文件中:
#' @import ggplot2 gridExtra RColorBrewer
#' @importFrom scales alpha

但这会导致另一个警告:
* installing *source* package 'qdap' ...
** R
** data
*** moving datasets to lazyload DB
** inst
** preparing package for lazy loading
Warning: replacing previous import 'rescale' when loading 'scales'
Warning: replacing previous import 'annotate' when loading 'NLP'
Warning: replacing previous import 'alpha' when loading 'scales'

我如何使用 roxygen2importFrom正确标记?

我已阅读: https://github.com/hadley/devtools/wiki/Namespaces

但是我从一个必须有人这样做的例子中学到了最好的东西。我不确定如何正确格式化描述文件以及如何使用 roxygen2避免的标签:
* checking whether package ‘qdap’ can be installed ... [10s/10s] WARNING
Found the following significant warnings:
Warning: replacing previous import ‘annotate’ when loading ‘NLP’
Warning: replacing previous import ‘rescale’ when loading ‘scales’

这是 qdap GitHub Repo

最佳答案

要记住的事情是,您不能拥有多个功能
包命名空间中的相同名称。

假设有两个包 pkgA 和 pkgB,它们都导出一个函数
叫做 foo。如果你创建一个包 pkgC,它有 import(pkgA)import(pkgB)在命名空间中。现在,当您调用 library(pkgC)你会得到
一个警告:

replacing previous import 'foo' when loading 'pkgB'. 

现在,假设有人创建了另一个包 pkgD,它在 NAMESPACE 文件中有这个:
import(pkgA)
import(pkgB)
import(pkgC)

然后, library(pkgD ) 将给出 2 个警告:
1: replacing previous import ‘foo’ when loading ‘pkgB’ 
2: replacing previous import ‘foo’ when loading ‘pkgB’

如果每个人都采用导入整个命名空间的做法,那么 30 年
从现在开始,会有很多这样的警告。

相反,由于您的包中只能有一个“foo”,您应该
显式导入您想要包的“foo”(和其他函数)
使用。在上面的例子中,pkgD 的 NAMESPACE 应该是
importFrom(pkgB,foo)

如果您确实需要从两个不同的包中使用具有相同名称的两个函数,您可以执行的一个技巧是从每个包中导入其他函数以确保安装了这些包并加载了它们的命名空间,然后引用您的函数需要使用 ::把它放在你的 NAMESPACE 中来表示:
importFrom(pkgA,foo)
importFrom(pkgB,bar)

然后调用函数 pkgA::abc()pkgB::abc()在你的代码中。

关于r - 使用 roxygen2 导入两个同名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336871/

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