2015-04-30 80 views
4

我试图包括在一个包下列GGPLOT2辅助函数GGPLOT2函数[它包装在grid_facet标签(〜变量,贴标机=“plot.label.wrap”)]:包含在包

#' Label wrapper for ggplot 
#' 
#' Include in the facet_grid option of ggplot. 
#' @param variable 
#' @param value 
#' @return wrapper 
#' @export 

plot.label.wrap <- function(variable, value) { 

    lapply(strwrap(as.character(value), width=15, simplify=FALSE), 
     paste, collapse="\n") 
} 

我的DESCRIPTION文件包含:Imports:ggplot2。使用函数的脚本包括:library(ggplot2)。

该软件包构建,重新加载并提供了关于?plot.label.wrap的文档。可以发现:

> getAnywhere(plot.label.wrap) 
A single object matching ‘plot.label.wrap’ was found 
It was found in the following places 
    registered S3 method for plot from namespace mypackage 
    namespace:mypackage 
with value 

function(variable, value) { 

    lapply(strwrap(as.character(value), width=15, simplify=FALSE), 
     paste, collapse="\n") 
} 
<environment: namespace:mypackage> 

但是:

> plot.label.wrap 
Error: object 'plot.label.wrap' not found 

所以我的问题是,为什么这个功能在mypackage中的命名空间,但不是在命令行本身发现了什么?

+0

这个函数的命名空间行是什么样的?当它看起来不像你的意图 – rawr

+0

S3method(plot,footprint.facet),但没有该函数的导出行时,它似乎被视为s3方法。 – Henk

+1

尝试'#'@export plot.label.wrap' – rawr

回答

3

注释中的解决办法是更具体的了解,如出口低于

#' Label wrapper for ggplot 
#' 
#' Include in the facet_grid option of ggplot. 
#' @param variable 
#' @param value 
#' @return wrapper 
#' @export plot.label.wrap 

plot.label.wrap <- function(variable, value) { 

    lapply(strwrap(as.character(value), width=15, simplify=FALSE), 
     paste, collapse="\n") 
} 

roxygen试图是聪明之类的东西了@usage@details@exports把事情simplier,但有时,像在这个例子中,它并不总是成功。

plot是可被定义为plot.someclass的S3通用方法,该方法将创建一个绘图方法,用于一些目的xclass“SomeClass的”,并且可以通过简单地plot(x)叫。

roxygen认为someclass你的包是“label.wrap”,并出口plot.label.wrap作为S3方法,而不是一个正常功能,并期望你使用它作为plot(x)其中class(x)是“label.wrap”,而不是试图用plot.label.wrap就像你试过的一样(发现它不起作用)。

另外,像@shadow提到的,你可以不使用功能名称周期,例如plot_label_wrapplot_label.wrapplot_labelwrap,等你不到,但在一些罕见的情况下,使用避免这种混乱时期会导致意外的行为