我正在使用roxygen2
开发一个程序包,其中包括许多基于lattice
的可视化文件。这些很好,但对于使用该软件包不是必需的,因此lattice
在Suggests:
文件的DESCRIPTION
部分而不是Depends:
部分中列出。
但是,我还没有弄清楚如何应用户的要求以同时传递lattice
和roxygenize()
的方式加载R CMD check
。以下两种方式都使lattice
看起来像未声明的依赖关系,并将返回以下错误。
##' @import lattice
{}
##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
xyplot(y ~ x)
}
和
##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
library(lattice)
xyplot(y ~ x)
}
两者都给出相同的错误
$ R CMD check dummy.roxygen
* using log directory ‘/###/dummy.roxygen.Rcheck’
* using R version 3.0.2 (2013-09-25)
* using platform: x86_64-pc-linux-gnu (64-bit)
* using session charset: UTF-8
* checking for file ‘dummy.roxygen/DESCRIPTION’ ... OK
* checking extension type ... Package
* this is package ‘dummy’ version ‘1.0-0’
* package encoding: UTF-8
* checking package namespace information ... OK
* checking package dependencies ... ERROR
Namespace dependencies not required: ‘lattice’
See the information on DESCRIPTION files in the chapter ‘Creating R
packages’ of the ‘Writing R Extensions’ manual.
由于对“ roxygen”一词的搜索与“ suggests”,“ depends”和“ imports”结合使用会返回大量无关的点击,因此,我一直在寻找答案已经很长时间了。同时,我刚刚列出了
lattice
和许多其他不错但非重要的软件包作为依赖项,但是现在当我要发布软件包时,我想以适当的方式解决它。 最佳答案
建议(在2013年,当我第一次写这个答案时)是有条件陈述中对require
的建议。现在在2016年,the official recommendation将使用::
并让R打印there is no package called X
错误:
##' Visualization
##'
##' @description Visualize the data. \pkg{\link{lattice}} package required.
##' @param x Data.
##' @param y More data.
##' @seealso \pkg{\link{lattice}}
##' @export
vizz <- function(x, y){
lattice::xyplot(y ~ x)
}
并且只能将
Suggests: lattice
保留在DESCRIPTION
中(import
中不要NAMESPACE
)。如果要自定义错误消息,现在可以在条件语句中使用
requireNamespace(lattice)
,例如:vizz <- function(x, y){
if (! requireNamespace("lattice", quietly = TRUE)) {
stop("Please install lattice: install.packages('lattice')")
lattice::xyplot(y ~ x)
}