如何调整 Stargazer 在 R Markdown 中生成的表格的大小?
How to resize tables generated by Stargazer in R Markdown?
我在代码块中包含了 resize.height=0.5,resize.width=0.5
,但仍然无法调整 stargazer 生成的 table 的大小。谁能告诉我为什么?
我的代码块选项如下所示:
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")
非常感谢任何帮助!
--
忘了说 - 我正在使用 table.
的 beamer
我自己解决问题:
要使用 stargazer 调整 table 大小,您可以更改字体大小 font.size=
,使 Stargazer 单行 single.row = TRUE
并更改列之间的 space column.sep.width = "1pt"
在 stargazer()
.
虽然 the link here 建议使用 print(stargazer(),scalebox='0.7')
,但它对我不起作用可能是因为我在 Beamer 中使用 Markdown,但我不确定。仍然希望对此做出更多贡献。
我本来希望得到一个更直接的答案,但这有效!
This comment on GitHub 启发我将 \resizebox{}
实现为 stargazer()
。您可以使用 resizebox.stargazer()
指定从 stargazer()
输出的 table 的大小和 tab.width
and/or 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")
}
您可以指定 table 尺寸,例如resizebox.stargazer(..., tab.width = "0.7\textwidth")
。请注意,您必须从 \
而不是 \
.
编写 TeX 命令
这里是 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")
这个post也提供了一些帮助:
我会跟随@yuan-ning 并操纵观星者的选项。对于 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
)
如果问题出在 html Rmd 文件,您应该在块的开头指定 {r, results = 'asis'}
,然后在 stargazer type = 'html'
中指定。这对我有用。
我在代码块中包含了 resize.height=0.5,resize.width=0.5
,但仍然无法调整 stargazer 生成的 table 的大小。谁能告诉我为什么?
我的代码块选项如下所示:
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")
非常感谢任何帮助!
-- 忘了说 - 我正在使用 table.
的 beamer我自己解决问题:
要使用 stargazer 调整 table 大小,您可以更改字体大小 font.size=
,使 Stargazer 单行 single.row = TRUE
并更改列之间的 space column.sep.width = "1pt"
在 stargazer()
.
虽然 the link here 建议使用 print(stargazer(),scalebox='0.7')
,但它对我不起作用可能是因为我在 Beamer 中使用 Markdown,但我不确定。仍然希望对此做出更多贡献。
我本来希望得到一个更直接的答案,但这有效!
This comment on GitHub 启发我将 \resizebox{}
实现为 stargazer()
。您可以使用 resizebox.stargazer()
指定从 stargazer()
输出的 table 的大小和 tab.width
and/or 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")
}
您可以指定 table 尺寸,例如resizebox.stargazer(..., tab.width = "0.7\textwidth")
。请注意,您必须从 \
而不是 \
.
这里是 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")
这个post也提供了一些帮助:
我会跟随@yuan-ning 并操纵观星者的选项。对于 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
)
如果问题出在 html Rmd 文件,您应该在块的开头指定 {r, results = 'asis'}
,然后在 stargazer type = 'html'
中指定。这对我有用。