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

And*_*rin 14 dependencies r package

我现在正在尝试用几个小时在R中构建一个包,并且对我进展缓慢有点绝望.我很快就建立了一个没有依赖的包,一切正常.由于几个帖子中的建议,我使用R Studio,devtools和Roxygen2(在Windows上).使用依赖项时,我在检查时遇到问题(例如使用devtools :: check()):

检查R代码中的依赖关系...注意Imports字段中的命名空间不从以下位置导入:'ggplot2'应使用所有声明的Imports.请参阅"Writing R Extensions"手册"创建R包"一章中有关DESCRIPTION文件的信息.

此外,check()删除import(ggplot2)NAMESPACE中的行.如果我检查(文档= F),它会给出一个digest未加载的包的隐秘错误.我读了'编写R扩展' - 1.1.3包依赖关系和Hadley的Wiki关于如何编写包,但无法解决我的问题.来自CRAN的其他R包的描述和NAMESPACE文件看起来与我的不同(对我而言)?

问题:我做错了什么?对于这样一个基本问题感到抱歉,但是在解释依赖关系之前,我到目前为止看到的大部分分步教程都让我感到茫然.

到目前为止,我有3个文件:
A说明:

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
Run Code Online (Sandbox Code Playgroud)

一个NAMESPACE:

export(is.equal.null)
import(ggplot2)
Run Code Online (Sandbox Code Playgroud)

一个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)
}
Run Code Online (Sandbox Code Playgroud)

csg*_*pie 11

您需要在两个地方声明导入:

  1. DESCRIPTION文件.你应该有一个类似于的行:

    Imports: ggplot2, pkg1, pkg2
    
    Run Code Online (Sandbox Code Playgroud)
  2. NAMESPACE文件.在这里,您声明所需的包

    import(ggplot2)
    
    Run Code Online (Sandbox Code Playgroud)

    或者避免命名空间冲突

    importFrom(ggplot2, geom_point)
    
    Run Code Online (Sandbox Code Playgroud)

    您可以使用@import@importFrom标签获取roxygen2来维护NAMESPACE文件.

在您的示例中,您的DESCRIPTION文件看起来没问题,但您尚未向NAMESPACE添加必要的功能.

  • 尝试/sf/ask/2039518001/ generated-by-roxygen2-skipped-confusion-with-hadley-book (2认同)