让以下代码:
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 多个方法,所以如果我可以继承泛型中的类,我只需要修改它们而不是几十个方法。
最佳答案
重命名 foo
至 foo_
,比如说,然后定义 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/