2015-08-27 45 views
0

CRAN策略不允許替換在基本或推薦軟件包中定義的單個方法(用於泛型函數)。他們建議包裝作者替換標準通用並使用xxx.default方法,然後調用原始標準通用。重新定義繪圖功能中斷的通用情況plot.formula

一個例子從我的包如下:

## overwrite standard generic 
plot <- function(x, y, ...) 
    UseMethod("plot") 

## per default fall back to standard generic 
plot.default <- function(x, y, ...) 
    graphics::plot(x, y, ...) 

## now specify modified plot function for data frames 
plot.data.frame <- function(x, variables = names(x), ...) 

完整代碼可以在GitHub找到。

對於各種仿製藥,如toLatex,此方法完美無缺。然而,上述情節方法定義打破標準plot.formula功能:

library("devtools") 
install_github("hofnerb/papeR") 

## still works: 
example(plot.formula, package="graphics")  

### But: 
library("papeR") 
example(plot.formula, package="graphics") 
## Error in eval(expr, envir, enclos) : object 'Ozone' not found 

我仍然可以使用

graphics:::plot.formula(Ozone ~ Wind, data = airquality)  

雖然。其他繪圖功能可以繼續工作,請參閱

example("plot", package = "graphics") 

其他信息

在我NAMESPACE我有

importFrom("graphics", "plot", "plot.default", ...) 
export(plot, plot.data.frame, ...) 
S3method(plot, default) 
S3method(plot, data.frame) 

有關此主題(有不同的重點)之前的討論參見here

回答

相關問題