我试图将R中的@
运算符转换为S3系统的通用函数。
根据Writing R extensions: adding new generic中的章节,我尝试为@
实现泛型,如下所示:
`@` <- function(object, name) UseMethod("@")
`@.default` <- function(object, name) base::`@`(object, name)
但是,这似乎不起作用,因为它破坏了S4方法的@
。我使用Matrix
包作为S4实例的示例:
Matrix::Matrix(1:4, nrow=2, ncol=2)@Dim
@.default
(Matrix :: Matrix(1:4,nrow = 2,ncol = 2),Dim)中的错误: 该类“ dgeMatrix”的对象的名称为“ name”的插槽没有
如何实现泛型@
,以便在S4类的情况下正确地进行调度?
编辑
还对为什么它不是一个好主意感兴趣吗?