4

是否可以将 resizebox 合并到 R 中的 stargazer 中?我正在尝试创建一个太宽而无法容纳的桌子,即使在横向角度也是如此。我手动将 resizebox{\textwidth}{!} { \begin{tabular} \end{tabular} } 添加到 .tex 文件中,我喜欢它的外观。但是,我希望我的 .Rnw 文件完整,这样我就可以完美地生成 pdf 而无需对 .tex 文件进行额外更改。

在相关的注释中,当没有指定标签时,stargazer 会导致 pdflatex 输出多个警告,因为它包括 \label{}。这些不会影响 pdf 的创建,但是当存在其他错误时会引起混乱。

同样,我可以从 .tex 文件中手动删除这些行,或指定标签名称。但是,我想简单地告诉 stargazer 根本不要包括这条线。

4

3 回答 3

4

capture.output()这并不理想,但您可以使用和手动操作从 stargazer 输出的 LaTeX 代码gsub()

table <- capture.output({ # Store the stargazer output in a string
  stargazer(iris, header=F) # e.g.
})
table <- gsub("\\begin{tabular}","\\resizebox{0.9\\textwidth}{!}{\\begin{tabular}", table,fixed=T)
table <- gsub("\\end{tabular}","\\end{tabular}}", table,fixed=T)
cat(table)

如果您在多个地方需要它,您也可以将该过程提取到一个方法中。

于 2016-03-15T17:33:44.983 回答
1

要回答问题的第 2 部分,您可以使用label标记表格。这样您就不必从.tex文件中手动删除空的 \label{}。您还可以使用 \ref{your.table.label} 引用您的表格。

stargazer(df, title = "Statistical Summary", label="your.table.label", table.placement = "H")
于 2015-10-11T07:36:27.780 回答
1

我发现最好的方法是使用将 stargazer 选项 float 设置为 FALSE,然后使用 cat() 手动将 scalebox 放入 float 环境中;例如:

<< results='asis', echo = FALSE>>=

cat("\\begin{table}[!htbp]")
cat("\\centering")
cat("\\caption{OLS Regression Results by Metal Level}")
cat("\\label{OLS}")
cat("\\scalebox{.8}{")

stargazer(models$model1OLS,
          float = FALSE)

cat("}") # for the end of the scalebox
cat("\\end{table}")

@

请注意,您还必须手动为表格添加标签、居中和标题。这几乎肯定可以使用 resizebox 而不是 scalebox,但我还没有尝试过。

于 2016-11-30T18:14:54.907 回答