R 如何使用plot函数绘制自己函数的结果?

R 如何使用plot函数绘制自己函数的结果?,r,function,plot,R,Function,Plot,我正在写一个包含函数的短R包。该函数返回向量列表。我想使用plot函数,以便在默认情况下绘制一个使用其中一些向量完成的绘图,添加线并添加一个新参数 例如,如果我使用survival包,我可以得到以下信息: library(survival) data <- survfit(Surv(time, status == 2) ~ 1, data = pbc) plot(data) # Plots the result of survfit plot(data, conf.int = "non

我正在写一个包含函数的短R包。该函数返回向量列表。我想使用plot函数,以便在默认情况下绘制一个使用其中一些向量完成的绘图,添加线并添加一个新参数

例如,如果我使用
survival
包,我可以得到以下信息:

library(survival)

data <- survfit(Surv(time, status == 2) ~ 1, data = pbc)

plot(data) # Plots the result of survfit
plot(data, conf.int = "none") # New parameter 
库(生存)

数据我想你可能在找课程。您可以使用S3系统来实现这一点

对于您的
survival
示例,
data
具有class
survfit
(请参见
class(data)
)。然后使用
plot(data)
将查找名为
plot.survfit
的函数。这实际上是
survival
包中的一个非导出函数,位于
survival:::plot.survfit

你可以很容易地为你的包裹做同样的事情。例如,使用一个函数创建类为“my_class”的对象,然后定义该类的打印方法:

f <- function(x, y){
  b <- x^2
  c <- y^2
  d <- x+y
  r <- list(one = b, two = c, three = d)
  class(r) <- c('list', 'my_class')       # this is the important bit.
  r
}

plot.my_class <- function(x) {
  plot(x$one, x$two)
}

f我想你可能在找课程。您可以使用S3系统来实现这一点

对于您的
survival
示例,
data
具有class
survfit
(请参见
class(data)
)。然后使用
plot(data)
将查找名为
plot.survfit
的函数。这实际上是
survival
包中的一个非导出函数,位于
survival:::plot.survfit

你可以很容易地为你的包裹做同样的事情。例如,使用一个函数创建类为“my_class”的对象,然后定义该类的打印方法:

f <- function(x, y){
  b <- x^2
  c <- y^2
  d <- x+y
  r <- list(one = b, two = c, three = d)
  class(r) <- c('list', 'my_class')       # this is the important bit.
  r
}

plot.my_class <- function(x) {
  plot(x$one, x$two)
}

f没有
dat$a
,更不用说
plot$b
,想要的结果图是什么?为什么像
myplot这样的自定义函数我指的是dat$one和dat$two(已编辑),我知道如何制作自己的函数,但我想知道这是否可能(而且容易),因为我认为这是一种更直观的行为。试试
plot(data.frame(dat[1:2])
没有
dat$a
,更不用说
plot$b
,想要的结果图是什么?为什么像
myplot这样的自定义函数我指的是dat$one和dat$two(已经编辑过),我知道如何制作自己的函数,但我想知道这是否可能(也很容易),因为我认为这是一种更直观的行为。尝试
plot(data.frame(dat[1:2])
dat <- f(3, 2)
plot(dat)