小编Tre*_*vor的帖子

如何为基本矩阵 S3 子类编写“%*%”方法?

我想%*%为基本矩阵子类编写一个方法。我的子类是一个 S3 类,并且 的文档help("%*%")说它是一个 S4 泛型,并且需要为名为和%*%的两个参数的函数编写 S4 方法。在使用之前,我已经为 S4 泛型方法编写了 S3 类的方法,并且我查看了包的源代码以获取灵感,但由于某种原因,我无法完全让它在这种情况下工作。 显示我的方法存在于我的目标签名中,但当我尝试使用它时,我的方法似乎从未真正被 R 调用。xymethods::setOldClass()methods::setMethod(){Matrix}methods::showMethods()

x <- diag(3)
class(x) <- c("atm2d", class(matrix()))
print(x)
Run Code Online (Sandbox Code Playgroud)
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
attr(,"class")
[1] "atm2d"  "matrix" "array" 
Run Code Online (Sandbox Code Playgroud)

默认情况%*%下会删除我的类属性,我想保留它。

print(x %*% x)
Run Code Online (Sandbox Code Playgroud)
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1
Run Code Online (Sandbox Code Playgroud)

我尝试%*%为我的类创建一个方法,该方法不会删除我的类属性:

as.matrix.atm2d …
Run Code Online (Sandbox Code Playgroud)

r matrix r-s3 r-s4

11
推荐指数
1
解决办法
527
查看次数

标签 统计

matrix ×1

r ×1

r-s3 ×1

r-s4 ×1