如何在属于包装的R函数中自定义图?

问题描述 投票:0回答:1

我正在准备一个小的r包,我想在通过函数创建的对象上使用函数plot(),并获取自定义图形。例如,这是一个非常愚蠢的示例函数:

myfun <- function(x,y){

A <- B <- c()

  for(i in 1:x) {
    A[i] <- i^2
    B[i] <- i^2+1}

  return(list(A,B))
}

然后,我创建一个包含2个向量的列表:

obj <- myfun(5,6)

因此,获得绘图的标准方法是:

plot(x=obj[[1]],y=obj[[2]], main='my title',type = 'b', col='red)

但是,我想运行以下命令:

plot(obj)

并且得到相同的。所以我不知道如何将其编码到我的函数中以获得完全个性化的情节。另外,我想获得一个定制的摘要表,例如,运行以下命令:

summary(obj)

能够获得带有均值,sd等的表格。我一直在整个StackOverflow上搜索此内容,但没有成功,但是也许我使用了错误的关键字。提前谢谢。

r plot package cran
1个回答
2
投票

如果您给myfun输出一个自定义类:

class(obj) <- 'myClass'

然后添加新的s3方法:

plot.myClass <- function(obj) {
      plot(x=obj[[1]],y=obj[[2]], main='my title',type = 'b', col='red)
}

现在您可以使用:

plot(obj)

0
投票

SmokeyShakers关于绘图的答案是正确的,但是对于您其他有关能够获取带有均值,sd等的表格的问题。您需要将obj转换为数据框,然后运行summary,以便能够获取所有统计信息。

summary(data.frame(x=obj[[1]],y=obj[[2]]))

       x            y     
 Min.   : 1   Min.   : 2  
 1st Qu.: 4   1st Qu.: 5  
 Median : 9   Median :10  
 Mean   :11   Mean   :12  
 3rd Qu.:16   3rd Qu.:17  
 Max.   :25   Max.   :26  
© www.soinside.com 2019 - 2024. All rights reserved.