小编cda*_*itz的帖子

愚弄 R 的方法调度

我正在寻找一个示例,其中函数名称中的点导致 R 的 Method Dispatch 选择错误的函数。一个自然的候选者似乎是内置函数,当应用于“test”类的对象时t.test()应该与它混淆。t()

然而奇怪的是,下面的代码实际上调用了转置函数,而不是t.test()

> x <- structure(cbind(1:4,2:5), class="test")
> class(x)
[1] "test"
> t(x)
     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    2    3    4    5
Run Code Online (Sandbox Code Playgroud)

这提出了两个问题:

  1. 为什么对象被转置而不被t.test()调用,因为它应该是由于方法调度的规则所致?
  2. 通过定义内部带有点的函数来搞乱方法调度过程的(简单)示例是什么?

overloading r

5
推荐指数
1
解决办法
193
查看次数

标签 统计

overloading ×1

r ×1