gpt4 book ai didi

Roxygen 和建议的软件包

转载 作者:行者123 更新时间:2023-12-03 22:32:56 24 4
gpt4 key购买 nike

我正在使用 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”与“建议”、“依赖”和“进口”相结合的搜索返回了大量无关的点击,因此我一直在寻找答案,但一直没有成功。同时我刚刚列出了 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)
}

关于Roxygen 和建议的软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19446429/

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