4

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

例如我有

#' @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("."),它才能工作。

4

1 回答 1

4

我怀疑你没有@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)
于 2015-08-28T20:27:56.167 回答