R语言stargazer包生成统计表格报错及LaTeX导出方案咨询
问题原因与解决方案
问题1:报错missing value where TRUE/FALSE needed的原因与解决
原因
- stargazer包原生不支持
tibble(tbl_df类)数据格式,仅适配基础的data.frame类型 - 若数据集中包含
Date类等非数值型列,stargazer会尝试对其做时间解析,触发逻辑判断缺失的报错
解决方法
将目标变量子集转换为基础data.frame格式,同时排除非数值类列:
library(stargazer) # 选取目标数值列,转换为普通data.frame table_input <- as.data.frame(df[, c("BNBClose", "BTCClose", "ADAClose", "LINKClose", "DODGEClose", "EOSClose", "ETHClose", "MIOTAClose", "LTCClose", "XMRClose", "XEMClose", "XLMClose", "USDTClose", "TRXClose", "XRPClose", "FEDWALCL", "FEDM0Reserves", "FEDM0Total", "CETFClose", "CRIXClose", "SPYClose", "GLDClose", "OILClose")]) # 运行生成表格 stargazer(table_input, type="text", title="Summary Statistics", out="table1.txt")
问题2:仅输出表头无统计值、缺少偏度峰度的原因与解决
原因
- 核心原因同样是输入数据为
tibble格式,stargazer无法正确读取列中的数值计算统计量 - stargazer默认输出的统计量不包含偏度、峰度,需要手动指定统计量参数
解决方法
转换数据格式的同时,通过summary.stat参数指定需要输出的统计指标:
stargazer(table_input, type = "text", title = "Summary Statistics", out = "table1.txt", # 自定义输出的统计量:观测数、均值、标准差、最小值、最大值、偏度、峰度 summary.stat = c("n", "mean", "sd", "min", "max", "skew", "kurt"))
替代R包推荐
以下包均支持生成指定统计量的描述性统计表,且可直接导出LaTeX格式:
- modelsummary:当前社科、金融领域学术发表常用包,原生兼容tidyverse生态与tibble格式,自定义程度高,支持导出LaTeX、Word、HTML等多种格式,示例代码:
library(modelsummary) # 直接生成含偏度峰度的汇总表,导出为LaTeX文件 datasummary_skim(df[, c("BNBClose", "BTCClose", "ADAClose")], output = "summary_table.tex", title = "Summary Statistics")
- psych + xtable:先用
psych::describe()计算所有需要的统计量,再用xtable()直接导出为LaTeX代码,灵活度最高,可完全自定义表格结构 - texreg:支持描述性统计与回归结果的LaTeX导出,配置逻辑与stargazer接近,迁移成本低
内容的提问来源于stack exchange,提问作者Horacio Ramella Núñez
相关产品推荐
相关产品推荐

