我正在准备一个小的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上搜索此内容,但没有成功,但是也许我使用了错误的关键字。提前谢谢。
如果您给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)
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