如何修复R中Stargazer包的‘missing value where TRUE/FALSE needed’错误
你在RStudio中使用Stargazer输出多个lm模型合并表格时遇到的报错:
Error in if (nchar(text.matrix[r, c]) > max.length[real.c]) { : missing value where TRUE/FALSE needed
通常是Stargazer处理表格文本时碰到了缺失值(NA),以下是具体的排查和修复方法:
检查协变量标签与模型变量的匹配性
你指定了covariate.labels = c("B4.1", "C2_score", "C1_score"),但如果model1.1到model1.6中的某个模型不包含这些变量,或者变量名拼写有误(比如大小写、标点差异),Stargazer会因找不到对应变量生成NA值,触发报错。
解决:先逐个运行summary(model1.x)(x从1到6),确认每个模型都包含这三个变量;如果部分模型没有这些变量,要么调整covariate.labels只保留所有模型共有的变量,要么用keep = c("B4.1", "C2_score", "C1_score")参数强制只保留指定变量,或者用omit参数排除无关变量。排查模型中的异常系数或NA值
如果某个模型存在完全共线性问题(比如两个变量高度相关),会导致系数为NA,Stargazer处理这类NA时会触发报错。
解决:运行lapply(list(model1.1, model1.2, model1.3, model1.4, model1.5, model1.6), coef)查看所有模型的系数,找到含NA的模型后,去掉共线性变量或重新构建模型。更新Stargazer包到最新版本
旧版本的Stargazer存在一些已知的文本处理bug,更新后可能解决问题。在控制台运行:update.packages("stargazer")临时跳过文本长度检查(应急方案)
如果以上方法都无效,可以尝试设置max.length = Inf参数,强制Stargazer不做文本长度判断,避免触发报错:stargazer(model1.1, model1.2, model1.3, model1.4, model1.5, model1.6, title = "The association between talent development and further education", dep.var.labels = "Whether to participate in talent development", covariate.labels = c("B4.1", "C2_score", "C1_score"), type = "html", star.cutoffs = c(0.05, 0.01, 0.001), out = "學才藝與升學.html", max.length = Inf)
内容的提问来源于stack exchange,提问作者李盈儒

