R语言stargazer包运行指定代码报Unrecognized object type错误原因
stargazer运行
stargazer(ToothGrowth ~ supp, type = "text")报Error: Unrecognized object type的可能原因 - 核心入参规则错配:stargazer的定位是对已完成拟合的统计模型做格式化结果输出,第一个入参要求为stargazer已适配的标准模型类对象(比如
lm/glm/coxph等函数返回的模型实例),本身不支持直接接收纯回归公式作为输入。你当前直接把公式对象作为第一个参数传入,stargazer没有针对公式类型的解析逻辑,因此直接触发无法识别对象类型的报错。 - 公式本身写法不符合建模规则:你当前书写的
ToothGrowth ~ supp把整个内置数据集ToothGrowth放在了公式的因变量位置,R建模要求公式左右的因/自变量都是对应数据集中的字段,不能直接把数据集本身写进公式;就算绕过stargazer直接用这个公式调用lm()拟合,也会触发变量匹配错误。 - 上游拟合环节生成的对象不合法:如果你本意是先完成模型拟合,再把结果传给stargazer,但拟合流程存在疏漏——比如调用
lm()时漏写data参数关联数据集、变量名和实际数据集字段不匹配,导致拟合步骤返回的不是标准模型对象(可能是空值、报错字符、自定义结构列表等非预期内容),stargazer解析这类非标准对象时,也会抛出同类识别错误。 - 版本适配缺失:如果使用的是长期未更新的旧版stargazer,对部分较新的模型类对象的解析规则存在缺失,哪怕传入的是合法拟合的模型,也可能触发识别失败;这类旧版本对非预期的公式类入参没有任何容错逻辑,会直接抛出对象类型错误。
- R环境内函数冲突:如果本地R环境中存在其他包导出的同名
stargazer函数,运行时没有优先调用官方stargazer包的实现,这类第三方同名函数的输入校验规则和官方版本存在差异,接收到公式类入参时也可能触发无法识别类型的报错。
参考正确使用流程:需要先完成模型拟合,再将拟合生成的标准模型对象传入stargazer做输出,示例代码:
# 拟合ToothGrowth数据集下,supp变量对牙齿长度len的回归关系 fit <- lm(len ~ supp, data = ToothGrowth) # 输出格式化文本结果 stargazer(fit, type = "text")
内容的提问来源于stack exchange,提问作者user15220015
相关产品推荐
相关产品推荐

