微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

获取内部 R 函数以使用我的 S4 方法

如何解决获取内部 R 函数以使用我的 S4 方法

我创建了一个自定义的 S4 类,其想法是它代表一个始终排序的向量,所以我不希望 sort() 实际上对它做任何事情。所以我为我的班级定义了一个存根版本的 sort()

MyClass <- methods::setClass("MyClass",slots=list(x="numeric"))
setMethod("sort",signature(x="MyClass"),function(x,...){}) # Do nothing

然后,我想计算我班级的分位数。 R 的 quantile() 函数在内部调用 sort()。但是,在 sort() 中使用的 quantile() 知道我的 S4 方法,因为它使用 UseMethod()(S3 调度程序)和 standardGeneric(),S4 调度程序。如下所示:

options(error=traceback)
instance = MyClass()
quantile(instance,0.5)

这会返回一个这样的调用堆栈:

5: order(x,na.last = na.last,decreasing = decreasing)
4: sort.default(x,partial = unique(c(lo,hi)))
3: sort(x,hi)))
2: quantile.default(instance,0.5)
1: quantile(instance,0.5)

由于 sort.default调用,很明显没有使用我的自定义 sort 实现。

有没有一种简单的方法可以让 R 在这里使用我的 S4 方法?我意识到我也可以定义 sort.MyClass(S3 方式),但是如果我这样做,那么拥有 S4 方法有什么意义呢?似乎 S4 与核心 R 方法不兼容,这使得它相当无用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。