You need to enable JavaScript to run this app. 调用longtable.stargazer输出两张重复stargazer表格的原因求解
优惠活动
大模型
产品
解决方案
定价
更多

调用longtable.stargazer输出两张重复stargazer表格的原因求解

问题原因

你自定义的longtable.stargazer函数中存在重复的输出逻辑:

  • 函数在# Exporting注释块下先执行了一次全局的cat(res, sep = "\n"),会把LaTeX表格代码输出一次
  • 后续的判断分支中,当你没有传入filename参数(也就是你调用longtable.stargazer(ols)的场景),会进入else分支再执行一次cat(res, sep = "\n"),两次输出拼接就出现了两张完全相同的表格。

修复方案

删掉函数里第一次多余的全局cat调用即可,修复后的完整函数代码如下:

longtable.stargazer = function(..., float = T, longtable.float = F, 
  longtable.head = T, filename = NULL){
  # Capturing stargazer to hack it
  require(stargazer)
  res = capture.output(
    stargazer(..., float = float)
  )
  # Changing tabulare environment for longtable
    res = gsub("tabular", "longtable", res)
  # removing floating environment
  if(float == T & longtable.float == F){
    res[grep("table", res)[1]] = res[grep("longtable", res)[1]]
    # Removing extra longtable commands
    res = res[-grep("longtable", res)[2]]
    res = res[-length(res)]
  }
  # Adding page headings
  if(longtable.head == T){
    res = c(res[1:which(res == "\\hline \\[-1.8ex] ")[1] - 1], "\\endhead", res[which(res == "\\hline \\[-1.8ex] ")[1]:length(res)])
  }
  # Exporting
  if(!is.null(filename)){
    cat(res, file = filename, sep = "\n")
    # Message
    cat(paste("\nLaTeX output printed to", filename, "\n", sep = " ", 
      collapse = ""))
  }else{
    cat(res, sep = "\n")
  }
}

修复后重新调用函数,就只会输出一张表格了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 22:15:05