如果我做两个这样的课程:

setClass("SuperClass", slots=c(a="character"), prototype=list(a="A"))
setClass("SubClass", slots=c(b="character"), prototype=list(b="B"), contains="SuperClass")

还有这样的方法:

setGeneric("foobar", function(x) standardGeneric("foobar"))
setMethod("foobar", "SuperClass", function(x) { cat(x@a, "\n", sep="") })

如何为类SubClass编写一个方法foobar,该方法可以为SuperClass调用foobar方法,然后执行其他特定于SubClass的计算?

该方法可能如下所示:

setMethod("foobar", "SubClass", function(x) {
        # call SuperClass's foobar
        cat(x@b, "\n", sep="")
})

如果我这样做:

x <- new("SubClass")
foobar(x)

应该打印出来

"A"
"B"

当然,这是一个可以通过其他方法解决的微不足道的用例,但我认为它抓住了我正在try 的精神.

推荐答案

您需要callNextMethod:

setMethod("foobar", "SubClass", function(x) {
        callNextMethod()
        cat(x@b, "\n", sep="")
})
x <- new("SubClass")
foobar(x)
# A
# B

R相关问答推荐

指定要保留在wrap_plots中的传奇

IQR()和stats之间四分位距计算的差异::分位数()在R和' ggpubr '

从嵌套列表中智能提取线性模型系数

如何在RMarkdown LaTex PDF输出中包含英语和阿拉伯语?

用黄土法确定区间

gganimate在使用shadow_mark选项时不保留所有过go 的标记

在for循环中转换rabrame

如何得到R中唯一的组合群?

矩阵的堆叠条形图,条形图上有数字作为标签

从R中的对数正态分布生成随机数的正确方法

在ggplot2上从多个数据框创建复杂的自定义图形

用多边形替换地块点

SHILINY中DT列的条件着色

Conditional documentr::R中数据帧的summarize()

对R中的列表列执行ROW Mean操作

如何在R中创建条形图,使条形图在y轴上围绕0.5而不是0构建条形图?

使用ggplot2绘制具有边缘分布的坡度图

如何获取R chromote中的当前URL?

动态统计函数在ShinyApp内部更改

根据向量对列表元素进行排序