1

是否可以允许“UseMethod”查看其他环境中定义的类函数?有关示例,请参见下面的代码。我也希望检测到 h.logical 以便 h(TRUE) 返回“逻辑”。

h <- function(x) {
  UseMethod("h")
}
h.character <- function(x){ "char"}
h.numeric <- function(x) { "num" }


aa = list(h.logical=function(x){"logical"})

attach(aa)

h("a")
h(10)
h(TRUE)

此代码现在在最后一行引发错误: Error in UseMethod("h") : no applicable method for 'h' applied to an object of class "logical"

用这个例子解决问题就足够了。如果那不可能,我将不胜感激以另一种方式解决实际用例。

用例如下:我有一个包,上面有 h 之类的函数,然后我想给那个函数添加一个类。只需将新函数添加到 .Globalenv 即可。当我想使用 testthat 进行测试时会出现问题,因为我不允许在测试中写入 .Globalenv 。将新的类函数添加到测试中的某个其他环境使其可以被 methods() 检测到,但是,UseMethod 仍然看不到它并引发错误。有任何想法吗?

我可以使用其他的东西然后 UseMethod 来达到这个目的,或者在测试时做一些其他的黑客来模仿实际的用法吗?

非常感谢任何有关如何处理此问题的帮助或指示!

4

0 回答 0