我是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和缩放包,以及NLP和ggplot包。它们具有共同的功能rescale和annotate。这将对最新的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'如何正确使用roxygen2的importFrom标签?
我读过: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’发布于 2013-08-23 13:01:32
要记住的是,包的命名空间中不能有多个具有相同名称的函数。
假设有两个包,pkgA和pkgB,它们都导出一个名为foo的函数。如果您创建一个包,pkgC,它在名称空间中有import(pkgA)和import(pkgB)。现在,当您调用library(pkgC)时,您将得到一个警告:
replacing previous import 'foo' when loading 'pkgB'. 现在,假设有人创建了另一个包pkgD,该包在命名空间文件中具有如下内容:
import(pkgA)
import(pkgB)
import(pkgC)然后,library(pkgD)将发出两个警告:
1: replacing previous import ‘foo’ when loading ‘pkgB’
2: replacing previous import ‘foo’ when loading ‘pkgB’ 如果每个人都采用导入整个命名空间的做法,那么30年后,将会有很多这样的警告。
相反,由于您只能在您的包中只有一个"foo“,所以您应该显式导入希望您的包使用的"foo”(和其他函数)。在上面的示例中,pkgD的命名空间应该是
importFrom(pkgB,foo)如果您实际上需要从两个不同的包中使用同名的两个函数,您可以执行的一种方法是从每个包中导入其他函数,以确保安装了包并加载了它们的命名空间,但通过将其放置在您的命名空间中,然后使用::符号引用所需的函数:
importFrom(pkgA,foo)
importFrom(pkgB,bar)然后在代码中调用函数pkgA::abc()和pkgB::abc()。
发布于 2016-08-17 16:12:19
很可能对你不再有用,但可能对其他人有用:你的问题的答案可以在你提到的网站上找到,特别是在这里(引用来源):“不管你用了多少次@importFrom foo bar”。
因此,正确使用roxygen2 2的标签@importFrom是:@importFrom package_name function_name。没有逗号,括号,没什么,只有两个名字用空格隔开(很明显,可能适用于多个函数)。
我刚才在为我的一个包的新版本生成文档时也尝试过这一点,所以它应该可以工作。
希望能帮上忙。
发布于 2019-12-06 13:29:08
最近我找到了解决这个问题的新方法。我想在开发中导入dplyr和data.table,它提供了这些警告。为了删除重叠函数,我使用importFrom导入除了重叠之外的data.table中的每个函数。
ls("package:data.table") %>%
setdiff(c("last","first","between",":=")) %>%
str_c(collapse = " ")
## "%between% %chin% %flike% %ilike% %inrange% %like% address alloc.col as.data.table as.Date.IDate as.IDate as.ITime as.xts.data.table chgroup chmatch chorder CJ copy cube data.table dcast dcast.data.table fcoalesce fifelse fintersect foverlaps frank frankv fread frollapply frollmean frollsum fsetdiff fsetequal fsort funion fwrite getDTthreads getNumericRounding groupingsets haskey hour IDateTime indices inrange is.data.table isoweek key key<- key2 like mday melt melt.data.table merge.data.table minute month nafill quarter rbindlist rleid rleidv rollup rowid rowidv second set set2key set2keyv setalloccol setattr setcolorder setDF setDT setDTthreads setindex setindexv setkey setkeyv setnafill setnames setNumericRounding setorder setorderv shift shouldPrint SJ tables test.data.table timetaken transpose truelength tstrsplit uniqueN update.dev.pkg wday week yday year"setdiff包含了所有冲突的函数名。最后,我只对上面的函数进行importFrom data.table。
https://stackoverflow.com/questions/18343235
复制相似问题