为什么我的包函数找不到其他非导出标记函数?

时间:2015-08-28 17:54:15

标签: r r-package

我读过Hadley Wickham的大部分书:http://r-pkgs.had.co.nz/,但我很困惑为什么我的包中的函数找不到我的其他非导出函数。

E.g我有

#' @export
#' @import ggmap
#' @import hexbin
map  <- function(return.query, zoom, maptype, histObj) {

  UseMethod("map")

}
#' 
map.querySold  <- function(query, zoom = 11, maptype = "roadmap") {
  My Code
}

使用干净的环境运行并加载我的包会产生错误:

> map(x) # x is of class querySold
Error in UseMethod("map") : 
  no applicable method for 'map' applied to an object of class "c('querySold', 'data.frame')"

有什么问题,我该如何解决这个问题?我认为内部函数总是可用于包中的所有其他函数? 直到我加载devtools::load_all(".")的所有函数才有效。

1 个答案:

答案 0 :(得分:2)

我怀疑你没有@export map.querySold。请尝试以下方法:

@export放在第一个map函数之前。

#' @import ggmap
#' @import hexbin
#' @export
map  <- function(return.query, zoom, maptype, histObj) {

  UseMethod("map")

}

并在此处添加@export

#'@export 
map.querySold  <- function(query, zoom = 11, maptype = "roadmap") {
  My Code
}

然后运行devtools::document()并检查NAMESPACE文件。

如果这不起作用,发布您的NAMESPACE可能会有所帮助。我在想你应该

S3method(map.querySold)
export(map)