gpt4 book ai didi

r - 如何在自己的 R 包中覆盖 plot.default?

转载 作者:行者123 更新时间:2023-12-04 09:47:37 27 4
gpt4 key购买 nike

所以我正在制作一个 R 包。在这个包中,我有一个函数 foo1 返回一个 S3 列表,其组件可以被绘制。现在我有一个函数 plotfoo1 可以做到这一点。例如。以下目前有效:

output1<-foo1(Data)
plotfoo1(output1)

现在我的问题。我想重写 R 中的 plot 函数,以便以下将产生相同的输出:

plot(output1)

但我不知道该怎么做。我正在寻找(链接?)解释如何做到这一点。这应该是可能的,因为似乎许多包都有自己的自定义绘图功能......

最佳答案

您不想覆盖 plot.default - 那将是一个糟糕的主意。您可能应该做的是让 foo1 返回一个包含您创建的类的对象,并为该类类型编写 S3 plot 方法。这是一个例子

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)

关于r - 如何在自己的 R 包中覆盖 plot.default?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25386692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com