r - 在 R 中检测其他环境中的方法——用于在 testthat 中进行测试
问题描述
是否可以允许“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 来达到这个目的,或者在测试时做一些其他的黑客来模仿实际的用法吗?
非常感谢任何有关如何处理此问题的帮助或指示!
解决方案
推荐阅读
- azure - 在 Azure 应用服务中部署的 Spring Boot Web 应用中配置 SQL 连接池
- delphi - Delphi - 创建一个通用 TButton 来创建任何给定类的对象
- python - 将不同的字节格式保存为 Python 中的可读文本
- reactjs - 在反应中选择日期时间值时下拉文本为空
- c# - 无法使用自定义属性创建自定义异常类构造函数
- django - JSON 材质 UI 选择下拉
- r - 为什么 R 在 glmnet 的绘图命令中返回“找不到对象”错误?
- c# - 在同一视图中获取一个值以从一种形式持续到另一种形式
- null - 仅当不为空时才为变量赋值 - Kotlin
- java - 调用 uri.getLastPathSegment() 时应用程序崩溃