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

在 R 中检测其他环境中的方法——用于在 testthat 中进行测试

如何解决在 R 中检测其他环境中的方法——用于在 testthat 中进行测试

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

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 之外的其他方法,或者在测试时做一些其他的 hack 来模拟实际用法吗?

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

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