调用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
相关产品推荐
相关产品推荐

