示例:我有一个MatrixPair
类和一个NamedMatrixPair
(继承自MatrixPair
)。 MatrixPair$show()
在其中打印两个矩阵,我希望NamedMatrixPair$show()
打印一些额外的信息,然后还附加MatrixPair$show()
将要打印的内容。
显然这是一个玩具的例子;我知道你可以在矩阵等中命名列,但这不是我的问题。
我是R的新手。我正在使用参考类。
在我所知道的大多数语言中,这是一种超常用的东西(例如super.show()
或base.show()
或其他)。我不知道在R中是否甚至可以这样做。
MatrixPair <- setRefClass(
'MatrixPair',
fields = list(
m1 = 'matrix',
m2 = 'matrix'),
methods = list(
initialize = function(...) {
callSuper(...)
},
showX = function() {
cat(sprintf("2 matrices, with dimensions %s x %s:\n", nrow(m1), ncol(m1)))
methods::show(m1)
methods::show(m2)
},
)
)
NamedMatrixPair <- setRefClass(
'NamedMatrixPair',
contains = 'MatrixPair',
fields = list(
'rowName' = 'character',
'colName' = 'character'
),
methods = list(
initialize = function(m1, m2, ...) {
callSuper(m1 = m1, m2 = m2, ...)
},
show = function() {
cat(sprintf("rows: %s ; cols: %s", rowName, colName))
# I want to call show() for parent class MatrixPair.
# methods::show(.self) won't do it
# show(as(MatrixPair, .self)) - i.e. casting the derived class object to the parent class - won't do it
}
)
)
编辑:我找到了解决方案。
show = function() {
cat(sprintf("rows: %s ; cols: %s", rowName, colName))
callSuper()
}