You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R Markdown转PDF报错Missing $ Inserted,求保留theta的修复方案

解决stargazer生成theta统计量导致的LaTeX编译「Missing $ Inserted」错误

问题根源

stargazer输出负二项模型的theta统计量时,默认生成的LaTeX代码里,希腊字母θ或者统计量格式(比如潜在的上标)未被包裹在LaTeX数学环境($...$)中,导致PDF编译时LaTeX无法识别这些数学符号,抛出「Missing $ Inserted」错误。

修复方法

方法1:自定义theta统计量输出格式(推荐)

通过custom.stat参数手动定义theta的显示格式,确保内容包含LaTeX数学环境,可控性强:

# 提取两个模型的theta值并保留三位小数
theta_m3 <- round(m3$theta, 3)
theta_m4 <- round(m4$theta, 3)

stargazer(
  m3, m4,
  title = "title",
  align = TRUE,
  header = FALSE,
  dep.var.labels = c("Model 1"),
  type = stargazer_opt,
  star.cutoffs = c(0.05, 0.01, 0.001),
  omit.table.layout = "l",
  no.space = FALSE,
  # 自定义theta的显示,用$包裹确保LaTeX识别
  custom.stat = list(
    list("$\Theta$", sprintf("$%.3f$", theta_m3), sprintf("$%.3f$", theta_m4))
  ),
  # 指定保留需要的统计量,替换默认的theta输出
  keep.stat = c("n", "theta")
)

方法2:关闭LaTeX转义(快速解决)

如果stargazer已生成正确的LaTeX代码但被自动转义,设置escape = FALSE让R Markdown直接解析LaTeX语法:

stargazer(
  m3, m4,
  title = "title",
  align = TRUE,
  header = FALSE,
  dep.var.labels = c("Model 1"),
  type = stargazer_opt,
  star.cutoffs = c(0.05, 0.01, 0.001),
  omit.table.layout = "l",
  no.space = FALSE,
  escape = FALSE # 禁止转义LaTeX特殊字符
)

注意:此方法可能导致其他含特殊字符的内容(比如变量名里的_)编译出错,需确保所有内容符合LaTeX语法规范。

方法3:手动修改LaTeX代码(临时应急)

若不想修改R代码,可先将R Markdown编织为LaTeX文件,找到theta对应行,把未被包裹的数学符号用$包裹。例如将:

\multicolumn{1}{c}{theta} & \multicolumn{1}{c}{0.046} \\

修改为:

\multicolumn{1}{c}{$\Theta$} & \multicolumn{1}{c}{$0.046$} \\

再手动编译LaTeX文件生成PDF。

内容的提问来源于stack exchange,提问作者Maxi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:49:52