r - 如何使通用 R 函数继承其输入的类?

标签 r class inheritance r-s3

让以下代码:

x <- 1:5
class(x) <- "bar"

foo <- function(x) {
    UseMethod("foo")
}

foo.bar <- function(x) {
    y <- max(x)
    return(y)
}
我想要 foo(x) 的输出与 x 具有相同的类(即“酒吧”)。显而易见的方法是添加 class(y) <- class(x)foo.bar() ,但我想知道我是否/如何在 foo() 中做到这一点本身。
这样做的原因是我的真实案例有几个泛型,每个都有 10 多个方法,所以如果我可以继承泛型中的类,我只需要修改它们而不是几十个方法。

最佳答案

重命名 foofoo_ ,比如说,然后定义 foo调用 foo_然后设置类。

foo_ <- foo
foo <- function(x) structure(foo_(x), class = class(x))
foo(x)
给予:
[1] 5
attr(,"class")
[1] "bar"

关于r - 如何使通用 R 函数继承其输入的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69069784/

相关文章:

c++ - 返回对类成员容器的元素的引用

javascript - 在 ecmascript 6 中定义 setter 时出错

Ruby 类方法调用它两次?

javascript - 类型继承: Why do you have to create a new object instead of setting the prototype directly?

r - R 中 character() 和 ""之间的差异

r - 从 R 中的向量创建频率计数

r - R 中的插值 : retrieving hourly values

python - 使用父类中的方法定义属性

python - 如何使用mixins与pony orm共享属性

html - rvest 和 NHL 统计数据的 Css 选择器问题