【发布时间】:2014-04-29 04:33:50
【问题描述】:
我现在尝试了几个小时在 R 中构建一个包,并且对我的进步有多慢感到有些绝望。我很快就构建了一个没有依赖项的包,一切正常。由于几篇文章的建议,我正在使用 R Studio、devtools 和 Roxygen2(在 Windows 上)。对于依赖项,我在检查时遇到问题(例如使用 devtools::check() ):
检查 R 代码中的依赖关系...注意 Imports 字段中的命名空间 未从:'ggplot2' 导入所有声明的 Imports 都应使用。 请参阅“创建 R”一章中有关说明文件的信息 'Writing R Extensions' 手册中的包'。
此外,check() 删除命名空间中的import(ggplot2) 行。如果我检查(document=F),它会给出一个关于未加载的digest 包的神秘错误。我阅读了'Writing R Extensions' - 1.1.3 Package Dependencies 和 Hadley's Wiki,了解如何编写包,但无法解决我的问题。 CRAN 中其他 R 包的说明和命名空间文件与我的看起来没有什么不同(在我看来)?
问题:我做错了什么?对于这样一个基本问题,我很抱歉,但我很茫然,到目前为止我看到的大多数分步教程在解释依赖关系之前都停止了。
到目前为止,我有 3 个文件:
描述:
Package: test
Type: Package
Title: Foo
Version: 1.0
Date: 2014-03-21
Author: Bar
Maintainer: Foo <bar@mail.com>
Description: Blubb
Imports:
ggplot2
License: GPL-3
命名空间:
export(is.equal.null)
import(ggplot2)
一个 R 文件:
#' Extension of compare to include NULLs
#'
#' Works as an extension to usual compare
#' Compares two basic objects which in addition to usual compare can be NULL
#' Intuitive output: TRUE if both are equal or NULL resp., FALSE if both are unequal or only one is NULL
#'
#' @param obj1 Basic object like \code{numeric, char, boolean, NULL}
#' @param obj2 Basic object like \code{numeric, char, boolean, NULL}
#' @keywords compare
#' @export
#' @examples
#' is.equal.null(5,5) # TRUE
#' is.equal.null(5,NULL) # FALSE
#' is.equal.null(NULL,NULL) # TRUE
is.equal.null <- function(obj1, obj2) {
# Small helper function to generalize comparison to comparison of NULL
# returns TRUE if both are NULL, and FALSE if only one of the objects is NULL
bool <- obj1==obj2
#qplot(obj1)
if (length(bool)) return(bool)
if (is.null(obj1) & is.null(obj2)) return(TRUE)
return(FALSE)
}
【问题讨论】:
标签: r dependencies package