我正在尝试转动@
R 中的运算符转换为 S3 系统的通用函数。
基于中的章节编写 R 扩展:添加新的泛型 https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Adding-new-generics我尝试实现泛型@
像这样:
`@` <- function(object, name) UseMethod("@")
`@.default` <- function(object, name) base::`@`(object, name)
然而这似乎不起作用,因为它打破了@
对于 S4 方法。我在用Matrix
以S4实例包为例:
Matrix::Matrix(1:4, nrow=2, ncol=2)@Dim
错误于@.default
(矩阵::矩阵(1:4, nrow = 2, ncol = 2), Dim) :
类“dgeMatrix”的该对象没有名称“name”的插槽
如何实现泛型@
所以它在 S4 类的情况下正确调度?
EDIT
还对为什么这可能不是一个好主意的意见感兴趣?
在 R 4.3.0 及更高版本中,@
运算符将在 S3 内部通用,如最新文档中所述NEWS https://stat.ethz.ch/R-manual/R-devel/doc/html/NEWS.html:
The @
运算符现在是 S3 泛型。基于 Tomasz Kalinowski 的贡献PR#18482 https://bugs.r-project.org/show_bug.cgi?id=18482.
如果您不想等待 4 月 21 日 R 4.3.0 发布,可以在 R-devel 上进行测试:
.S3method("@", "zzz", function(object, name) "OK")
structure(0, class = "zzz")@whatever
## [1] "OK"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)