我遇到过类似的问题,我想在这里发布部分解决方案以及在此过程中吸取的一些经验教训。
summarys4 方法时失败)lavaansemTool包时失败的问题)。methods("foo")或该类的所有方法methods(class="XYZ")。isGeneric("foo")。如果方法尚未注册,那么我们需要设置一个通用的 using (不是 的情况summary):
foo<- function(x) UseMethod("foo")
Run Code Online (Sandbox Code Playgroud)
第一个问题是:
可以选择,getS3method(f="foo",class="XYZ")但它需要函数和类;
utils::getAnywere("foo")更广泛,但也仅适用于加载的包......
如果只存在 S3 方法(没有 S4 方法),并且我们没有指定泛型,而只是指定新方法,并且我们确定尚未使用类名,那么这并不是真正的问题。
第二个问题是:
summary),它也会弄乱到 S4 方法的发送(i) 因此,我们还可以专门跟踪 S3 方法.S3methods("foo")或特定类的 s3 方法 .S3methods(class="XYZ"),并在加载我担心的所有主包后专门找出 S4 方法(.S4methods("foo")例如使用)……;
(ii) 识别对象类别;
(iii) 检查其文档中是否有任何类型的相应方法(显然,某些 s4 方法在文档中不容易识别,无法在 s3 方法中轻松调用)
(iv) 如果 (iii) 不可用,则评估其结构;和
(v) 通过调用已识别的方法(如果可用)或从对象中提取所需的输出(考虑其结构)来为特定类指定相应的 s3 方法...
(使用 .default 是一种替代方法,但我认为需要仔细考虑)。
但是,尽管考虑类对象结构重新指定方法的替代方案对于summary方法来说稍微容易一些,但对于其他函数来说可能会包含非常艰苦的工作......
我想应该有一个广泛的解决方案来自动考虑 s4 方法,但我对 S4 方法的有限知识目前无法在其中发展......