如何在R包中正确地包含依赖项?

如何在R包中正确地包含依赖项?,r,dependencies,package,R,Dependencies,Package,我现在花了几个小时试图在R中构建一个包,但对于我的进度有点绝望。我很快构建了一个没有依赖项的包,一切都很好。根据几篇文章中的建议,我正在使用R Studio、devtools和Roxygen2(在Windows上)。对于依赖项,我在检查时会遇到问题(例如,使用devtools::CHECK()): 正在检查R代码中的依赖项。。。注意导入字段中的命名空间 不是从“ggplot2”导入的所有已声明的导入都应使用。 请参阅“创建R”一章中有关描述文件的信息 “编写R扩展”手册的“包” 此外,check

我现在花了几个小时试图在R中构建一个包,但对于我的进度有点绝望。我很快构建了一个没有依赖项的包,一切都很好。根据几篇文章中的建议,我正在使用R Studio、devtools和Roxygen2(在Windows上)。对于依赖项,我在检查时会遇到问题(例如,使用devtools::CHECK()):

正在检查R代码中的依赖项。。。注意导入字段中的命名空间 不是从“ggplot2”导入的所有已声明的导入都应使用。 请参阅“创建R”一章中有关描述文件的信息 “编写R扩展”手册的“包”

此外,check()删除命名空间中的
import(ggplot2)
行。如果我检查(document=F),它会给出一个关于未加载的
摘要
包的神秘错误。我读了《编写R扩展》——1.1.3包依赖关系和Hadley的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
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)
}
比较的扩展以包括空值 #' #'作为常规比较的扩展 #'比较两个基本对象,除通常的比较外,这两个对象可以为空 #'直观输出:如果两者相等或为空,则为TRUE;如果两者不相等或只有一个为空,则为FALSE #' #'@param obj1基本对象,如\code{numeric,char,boolean,NULL} #'@param obj2基本对象,如\code{numeric,char,boolean,NULL} #“@关键字比较 #“@出口 #“@示例 #'is.equal.null(5,5)#TRUE #'is.equal.null(5,null)#FALSE #'is.equal.null(null,null)#TRUE
is.equal.null您需要在两个位置声明导入:

  • 描述文件。您应该有一行类似于:

    Imports: ggplot2, pkg1, pkg2
    
  • 名称空间文件。您可以在这里申报所需的软件包

    import(ggplot2)
    
    或者避免名称空间冲突

    importFrom(ggplot2, geom_point)
    
    您可以让roxygen2使用
    @import
    @importFrom
    标记来维护名称空间文件

  • 在您的示例中,您的描述文件看起来不错,但是您没有向名称空间添加必要的函数

    importFrom(ggplot2, geom_point)