首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活性氧和建议的包装

活性氧和建议的包装
EN

Stack Overflow用户
提问于 2013-10-18 09:42:00
回答 2查看 2.3K关注 0票数 17

我正在用roxygen2开发一个包,其中包括许多基于lattice的可视化。对于使用包来说,这些都很好,但并不是必需的,因此lattice列在DESCRIPTION文件的Suggests:部分而不是Depends:部分中。

但是,我还没有弄清楚如何在用户请求时以一种既传递lattice又传递lattice的方式加载roxygenize()。以下两种方法都使lattice看起来像是一个未声明的依赖项,并将返回下面的错误。

代码语言:javascript
复制
##' @import lattice
{}

##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
    xyplot(y ~ x)
}

代码语言:javascript
复制
##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
    library(lattice)
    xyplot(y ~ x)
}

两者都给出了相同的错误

代码语言:javascript
复制
$ 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和其他一些不错但不重要的包作为依赖项列出,但是现在当我准备发布包时,我想用正确的方式解决它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-02 17:01:41

这个建议(在2013年我第一次写这个答案的时候)是在一个条件语句中给require的。现在,在2016年,正式建议将使用::并让R打印there is no package called X错误:

代码语言:javascript
复制
##' 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中(NAMESPACE中没有import )。

如果要自定义错误消息,现在可以在条件语句中使用requireNamespace(lattice),如:

代码语言:javascript
复制
vizz <- function(x, y){
    if (! requireNamespace("lattice", quietly = TRUE)) {
        stop("Please install lattice: install.packages('lattice')")
    lattice::xyplot(y ~ x)
}
票数 13
EN

Stack Overflow用户

发布于 2013-10-19 09:30:20

我不知道是什么导致了我的问题,但是在朱巴的帮助下,经过一些调试,我已经在这个问题上提出了正确的解决方案。处理漂亮但不重要的包的正确方法是在Suggests:文件的DESCRIPTION部分列出它们,并使用roxygen按下面的方式标记它们。

代码语言:javascript
复制
##' Visualization
##'
##' See \code{\link[lattice]{xyplot}} for details.
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
    library(lattice)
    xyplot(y ~ x)
}

这将不会在安装/附加我的包时自动安装或附加lattice,而只是在执行函数时不能附加lattice时抛出一个错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19446429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档