如何调整Stargazer在R Markdown中生成的表格?

时间:2017-04-06 04:50:07

标签: r-markdown beamer stargazer

我在代码块中包含class LeadContact(models.Model): account_handler = models.ForeignKey(User, blank=True, null=True, related_name='handling_leads', on_delete=models.SET_NULL) ,但仍然无法调整由stargazer生成的表的大小。谁能告诉我为什么?

我的代码块选项如下所示: resize.height=0.5,resize.width=0.5

观星者代码是这样的:

echo=FALSE,warning=FALSE,results='asis',resize.height=0.5,resize.width=0.5}

非常感谢任何帮助!

- 忘了提 - 我用桌子上的beamer。

4 个答案:

答案 0 :(得分:6)

我自己解决了这个问题:

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

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

我希望得到一个更简单的答案,但这有效!

答案 1 :(得分:1)

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命令。

答案 2 :(得分:0)

这里是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

答案 3 :(得分:0)

我会关注@ yuan-ning并操纵观星者的选项。对于R降价的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

)