gpt4 book ai didi

r - getMethod ("summary"中的错误,签名 = "FitDiff")

转载 作者:行者123 更新时间:2023-12-04 09:23:08 24 4
gpt4 key购买 nike

我正在使用 semTools::compareFit 比较熔岩物体.它抛出一个非常奇怪的错误消息。
我还尝试了以下可重现的示例:

data("HolzingerSwineford1939",package="lavaan")
HS.modelA <- ' visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9'

HS.modelB<- ' visual =~ x1 + x2
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9'
fit.A<- cfa(HS.modelA, data = HolzingerSwineford1939)
fit.B<- cfa(HS.modelB, data = HolzingerSwineford1939)
semTools::compareFit(fit.A,fit.B)
它返回:

Error in getMethod("summary", signature = "FitDiff") : no method found for function 'summary' and signature FitDiff


此外,由于代码在函数内部,但我想在屏幕上看到输出,我还包括:
result<-semTools::compareFit(fit.A,fit.B)
semTools::saveFile(result, file="",what="summary", tableFormat=FALSE)
这返回

Length Class Mode

  1 FitDiff      S4

我在第一条错误消息中看到了与 summary 相关的内容和方法...我有一些 S3 summary方法,试图在一个包中正式化供个人使用......不确定它是否相关......我是否可能搞砸了什么?
它发生在 RStudio 安装中的多个项目中......我的印象是它以前工作过......
我很感激任何帮助。

最佳答案

我在这里报告我如何规避这个问题。
这里发生的事情的结论:
这确实是 S3 方法扰乱 S4 方法调度的问题。
如果我加载 showMethods(summary)在加载 semTools 包之前,我得到:

Function "summary":
<not an S4 generic function>)
但是如果我加载 showMethods(summary)加载后,我得到:
Function: summary (package base)
object="ANY"
object="FitDiff"
(inherited from: object="ANY")
object="lavaan"
object="lavaanList"
object="mle"
所以,解决办法:
考虑到 FitDiff对象结构,我创建了一个 summary.FitDiff (s3方法):
summary.FitDiff<-function(object){
print(object@nested)
return(object@fit)
}
而这个 summary方法与 FitDiff 一起使用目的:
a<-semTools::compareFit(fit.A,fit.B)
summary(a)
这不是一个完美的解决方案,理想的解决方案应该涉及如何在不弄乱所有可能的 s4method 的情况下指定 s3 方法,但是我对 s4 方法没有足够的了解......它现在解决了我的问题......

关于r - getMethod ("summary"中的错误,签名 = "FitDiff"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63065696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com