gpt4 book ai didi

r - 重载S3通用加法和乘法函数

转载 作者:行者123 更新时间:2023-12-02 03:58:50 24 4
gpt4 key购买 nike

我正在尝试重载通用 S3 加法函数 + 和乘法函数 *

到目前为止,我成功地重载了所有 Ops(运算符(operator))功能。

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 不存在:'Error in +.foo <- function(e1, e2) { : object '.foo' not find'

我也尝试过使用 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"

关于r - 重载S3通用加法和乘法函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com