所以我正在制作一个R包.在这个包中,我有一个函数foo1返回一个S3列表,其组件可以绘制.现在我有一个功能plotfoo1可以做到这一点.例如以下目前的工作原理:
output1<-foo1(Data)
plotfoo1(output1)
Run Code Online (Sandbox Code Playgroud)
现在我的问题.我想覆盖R中的绘图函数,以便以下将产生相同的输出:
plot(output1)
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做.我正在寻找(一个链接?)解释如何做到这一点.它应该是可能的,因为似乎许多包具有自己的自定义绘图功能...
你不想覆盖plot.default- 这将是一个糟糕的主意.您可能应该做的是使它foo1返回一个具有您创建的类的对象,并为该类类型编写S3绘图方法.这是一个例子
foo1 <- function(){
dat <- data.frame(x = 1:10, y = rnorm(10))
# Give the data a class
class(dat) <- "myclass"
return(dat)
}
# Write plot function for objects that
# have class "myclass"
plot.myclass <- function(obj, ...){
plot.default(obj$x, obj$y)
}
mydata <- foo1()
# See - it has class "myclass"
class(mydata)
# plot recognizes that mydata has class "myclass"
# and calls plot.myclass on mydata automatically
plot(mydata)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1227 次 |
| 最近记录: |