过载S3通用添加和乘法功能

  • 本文关键字:功能 添加 S3 过载 r
  • 更新时间 :
  • 英文 :


我试图超载通用的S3添加函数+和乘法函数*

到目前为止,我设法超载了所有OPS(操作员)功能。

foo <- structure(list(value = 1, txt = 'a'), class = 'foo')
Ops.foo <- function(e1,e2){
  structure(list(value = e1$value * e2$value,
                 txt = paste(e1$txt, e2$txt)),
            class = 'foo')
}
foo + foo # value = 1, txt = "a a"

但是,我找不到如何单独使用(*)操作员的添加( )。我希望这种行为不同,具体取决于我添加或乘以新课程。

我已经尝试了以下方法:

+.foo <- function(e1,e2){
      structure(list(value = e1$value * e2$value,
                     txt = paste(e1$txt, e2$txt)),
                class = 'foo')
}

给我一个错误,说.foo不存在:'错误中的错误。P>

我也尝试使用usemethod(),但这似乎仅适用于S4类。

如何超载这些特定( , *)通用S3功能?

在这里您去

foo <- structure(list(value = 1, txt = 'a'), class = 'foo')
`+.foo` <- function(leftfoo, rightfoo) { return (paste(leftfoo$txt, rightfoo$txt)) }

并运行它会产生

> foo + foo
[1] "a a"

最新更新