使用fixest拆分固定效应回归后,esttable报错'nchar()'需字符向量
问题原因及解决办法
你遇到的这个错误,是因为用split="year"参数后,feols返回的是多模型组合的fixest_multi对象,旧版本的esttable在处理这种对象时,行名处理逻辑存在bug,导致nchar()函数拿到了非字符类型的输入,触发报错。
解决步骤
1. 优先更新fixest到最新版
后续版本的fixest已经修复了这个兼容性问题,直接更新包即可:
install.packages("fixest")
更新完成后重新运行你的代码,esttable(m1)就能正常输出结果了。
2. 用fixest自带的etable替代esttable
fixest原生的etable()函数对多模型对象的支持比esttable更好,完全适配split生成的结果,直接替换即可:
rm(list=ls()) options(digits = 7, scipen = 999) library(fixest) library(wooldridge) data(crime4) m1 <- feols(crmrte ~ polpc | year, data = crime4, split = "year") etable(m1) # 把esttable换成etable
3. 手动拆分模型(无法更新包时使用)
如果不能更新包,可以手动按年份拆分数据、逐个拟合模型,再传给esttable:
rm(list=ls()) options(digits = 7, scipen = 999) library(fixest) library(wooldridge) data(crime4) # 按年份拆分数据集 year_groups <- split(crime4, crime4$year) # 遍历每个年份组拟合模型 model_set <- lapply(year_groups, function(sub_df) { feols(crmrte ~ polpc | year, data = sub_df) }) # 给模型命名,方便输出时对应年份 names(model_set) <- names(year_groups) # 输出结果 esttable(model_set)
内容的提问来源于stack exchange,提问作者Jolan
相关产品推荐
相关产品推荐

