如何解决获取内部 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 举报,一经查实,本站将立刻删除。