R中运行summary(glm.object)报错:无法将"summary.glm"类强制转换为data.frame
报错核心原因
summary(glm.object)调用失败的核心是你当前的R环境中,summary泛型函数被更高优先级的对象覆盖,导致R没有正确调度stats包中针对glm类对象的summary.glm方法,转而执行了其他逻辑,最终出现强制类型转换错误。
你直接调用summary.glm(glm1)能正常运行,本质是跳过了泛型调度步骤,直接调用了glm对应的汇总方法,所以不受泛型被覆盖的影响。
验证方法
在控制台直接输入summary并运行,查看输出结果:
- 正常默认状态下,输出应该如下,明确指向stats包的泛型函数:
function (object, ...) UseMethod("summary") <bytecode: 0x7fe79b0a8a88> <environment: namespace:stats>
- 如果输出的函数体不是上面的内容,或者环境指向
.GlobalEnv,就说明你的全局环境中存在自定义的同名函数,覆盖了默认泛型。
解决方案
- 临时规避:每次调用时指定stats包的泛型,写法为
stats::summary(glm1),即可正常输出结果 - 永久修复:运行
rm(summary)删除全局环境中自定义的同名summary函数,之后再调用summary(glm1)就会恢复默认调度逻辑 - 如果重启R后问题复现,说明你上次退出R时保存了包含自定义
summary函数的工作空间,清空工作空间后重启R,且下次退出时选择不保存工作空间即可彻底解决。
内容的提问来源于stack exchange,提问作者Dan Phillips
相关产品推荐
相关产品推荐

