【问题标题】:How to resize tables generated by Stargazer in R Markdown?如何在 R Markdown 中调整 Stargazer 生成的表格的大小?
【发布时间】:2017-04-06 04:50:06
【问题描述】:

我在代码块中包含了resize.height=0.5,resize.width=0.5,但仍然无法调整stargazer 生成的表格的大小。谁能告诉我为什么?

我的代码块选项如下所示: echo=FALSE,warning=FALSE,results='asis',resize.height=0.5,resize.width=0.5}

观星代码是这样的:

stargazer(did.student,student.control.kmt,student.control.neu,student.control.dpp,header = FALSE,
          title="DD Model",
          covariate.labels = c("Treatment","group","Treatment*group"),
          dep.var.labels = "attitude",
          column.labels   = c("","party1","Independent","party2"),
          label = "DiD-students")

不胜感激!

-- 忘了提 - 我在桌子上使用投影仪。

【问题讨论】:

    标签: r-markdown beamer stargazer


    【解决方案1】:

    我自己解决问题:

    要使用stargazer调整表格大小,您可以更改字体大小font.size=,使Stargazer单行single.row = TRUE和更改column.sep.width = "1pt"stargazer()中的列间距。

    虽然the link here 建议使用print(stargazer(),scalebox='0.7'),但它对我不起作用,也许是因为我正在将Markdown 与Beamer 一起使用,但我不确定。仍然希望对此做出更多贡献。

    我希望得到一个更直截了当的答案,但这行得通!

    【讨论】:

      【解决方案2】:

      This comment on GitHub 启发我将\resizebox{} 实现为stargazer()。您可以使用resizebox.stargazer() 来指定从stargazer() 输出的表的大小,并带有tab.width 和/或tab.height 参数。要激活该功能,您需要先运行以下代码:

      resizebox.stargazer = function(..., tab.width = "!", tab.height = "!"
                                     ){
        #Activate str_which() function:
        require(stringr) 
      
        #Extract the code returned from stargazer()
        res = capture.output(
          stargazer::stargazer(...)
          )
      
        #Render the arguments:
        tab.width = tab.width
        tab.height = tab.height
      
        #Attach "}" between \end{tabular} and \end{table}
        res = 
          prepend(res, "}", before = length(res))
      
        #Input \resizebox before \begin{tabular}
        res = 
          c(res[1:str_which(res, "^\\\\begin\\{tabular\\}.*")-1],
            paste0("\\resizebox{",tab.width,"}{",tab.height,"}{%"),
            res[str_which(res, "^\\\\begin\\{tabular\\}.*"):length(res)]
            )
      
        #Produce the whole strings
        cat(res, sep = "\n")
      }
      

      您可以指定表格大小,例如resizebox.stargazer(..., tab.width = "0.7\\textwidth")。请注意,您必须从 \\ 而不是 \ 编写 TeX 命令。

      【讨论】:

      • 谢谢!这太棒了。但是,似乎未修改的文本进入了输出文件。例如。定义 out = output.tex 不会产生缩放表,而是原始表。
      【解决方案3】:

      我会跟着@yuan-ning 操作stargazer 的选项。对于 R markdown 的 PDF 输出,请尝试以下操作:

      stargazer(model_1, model_2, model_3, model_4, model_5,
                type = 'latex',
       
                header=FALSE, # to get rid of r package output text
      
                single.row = TRUE, # to put coefficients and standard errors on same line
      
                no.space = TRUE, # to remove the spaces after each line of coefficients
      
                column.sep.width = "3pt", # to reduce column width
      
                font.size = "small" # to make font size smaller
      
      )
      

      【讨论】:

        【解决方案4】:

        这是 Carlos 将输出写入 LaTeX 文件的替代方案:

        mkTexTable <- function(..., file){
        
            tbl <- capture.output({
                stargazer(...)
            })    
        
            tbl <- gsub("\\begin{tabular}", "\\resizebox{\\textwidth}{!}{\\begin{tabular}", tbl, fixed = T)
            tbl <- gsub("\\end{tabular}", "\\end{tabular}}", tbl, fixed = T)
        
            fileConn <- file(file)
            writeLines(tbl, fileConn)
            close(fileConn)
        }
        
        mkTexTable(lm1, lm2, "texOutput.tex")
        

        这篇文章也提供了一些帮助:https://stackoverflow.com/a/36018251/2289444

        【讨论】:

          【解决方案5】:

          如果问题与 html Rmd 文件有关,您应该在块的开头指定 {r, results = 'asis'},然后在 stargazer 中指定 type = 'html'。这对我有用。

          【讨论】:

            猜你喜欢
            • 2021-09-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-29
            • 2020-04-04
            • 2021-11-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多