[英]How to properly include dependencies in R-package?
我現在正在嘗試用幾個小時在R中構建一個包,並且對我進展緩慢有點絕望。 我很快就建立了一個沒有依賴的包,一切正常。 由於幾個帖子中的建議,我使用R Studio,devtools和Roxygen2(在Windows上)。 使用依賴項時,我在檢查時遇到問題(例如使用devtools :: check()):
檢查R代碼中的依賴關系...注意Imports字段中的命名空間不從以下位置導入:'ggplot2'應使用所有聲明的Imports。 請參閱“Writing R Extensions”手冊“創建R包”一章中有關DESCRIPTION文件的信息。
此外,check()刪除NAMESPACE中的import(ggplot2)
行。 如果我檢查(document = F),它會給出一個未加載的digest
包的錯誤錯誤。 我讀了'編寫R擴展' - 1.1.3包依賴關系和Hadley的Wiki關於如何編寫包,但無法解決我的問題。 來自CRAN的其他R軟件包的描述和NAMESPACE文件看起來與我的不同(對我而言)?
問題:我做錯了什么? 對於這樣一個基本問題感到抱歉,但是在解釋依賴關系之前,我到目前為止看到的大部分分步教程都讓我感到茫然。
到目前為止,我有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
一個NAMESPACE:
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)
}
您需要在兩個地方聲明導入:
DESCRIPTION文件。 你應該有一個類似於的行:
Imports: ggplot2, pkg1, pkg2
NAMESPACE文件。 在這里,您聲明所需的包
import(ggplot2)
或者避免命名空間沖突
importFrom(ggplot2, geom_point)
您可以使用@import
和@importFrom
標記獲取roxygen2來維護NAMESPACE文件。
在您的示例中,您的DESCRIPTION文件看起來沒問題,但您尚未向NAMESPACE添加必要的功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.