[英]Using stargazer with Rstudio and Knitr
我正在努力使用 RStudio 在 knitr 中使用 stargazer 输出。 例如,我将下面的代码粘贴到 .Rmd 文件中,然后单击 Knit HTML。 [ 和 ] 之间的第一个块被渲染为方程。 第二块来自观星者。 它仍然是代码。 当我将第二个块 less [ 和 ] 粘贴到 Sweave 文件中,然后单击编译为 PDF 时,代码呈现为表格。 我安装了 MikTex 和 Stargazer 版本 3。
单击编译 PDF 时, 将 stargazer 或 xable 表插入 knitr 文档的答案在 Sweave 文件 (Rnw) 中对我有用。 在 Rmd 文件中,单击 Knit HTML 时不会呈现 tex。
如何将 stargazer 输出放入 Rmd 文件中,以便 Knit HTML 将乳胶代码转换为表格? (我是 Latex 的新手,不确定我可以删除哪些代码,所以对于长段表示歉意。)
\[
\begin{aligned}
\dot{x} & = \sigma(y-x) \\
\dot{y} & = \rho x - y - xz \\
\dot{z} & = -\beta z + xy
\end{aligned}
\]
\[
\documentclass{article}
\begin{document}
% Table created by StarGazer v.3.0.1 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu
% Date and time: Sun, Feb 03, 2013 - 11:34:52 AM
\begin{table}[htb] \centering
\caption{}
\label{}
\footnotesize
\begin{tabular}{@{\extracolsep{5pt}}lc}
\\[-1.8ex]\hline
\hline \\[-1.8ex]
& \multicolumn{1}{c}{\textit{Dependent variable:}} \\
\cline{2-2}
\\[-1.8ex] & Rate \\
\hline \\[-1.8ex]
pole & $0.071^{***}$ \\
& $(0.020)$ \\
& \\
post & $0.095^{***}$ \\
& $(0.019)$ \\
& \\
Constant & $-5.784^{***}$ \\
& $(1.667)$ \\
& \\
\hline \\[-1.8ex]
Observations & $46$ \\
Residual Std. Error & $2.378 (df = 43)$ \\
\hline
\hline \\[-1.8ex]
\textit{Note:} & \multicolumn{1}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\
\normalsize
\end{tabular}
\end{table}
\end{document}
\]
使用以下代码,您将获得一个工作版本
```{r, results='asis'}
stargazer(model)
```
转换为 pdf 时,以下代码非常适用于 stargazer 4.0:
```{r, results='asis'}
stargazer(model, header=FALSE, type='latex')
```
由于该主题已经过时了,我假设手头的问题是以某种方式将 stargazer 与 knitr 一起使用,而不是本质上将 stargazer 对象转换为 HTML。
作为观星者的狂热粉丝,我提出了以下工作流程:
如果有人想要 MS Word 中的观星表,我发现最好的方法是使用LaTeX2RTF 。 虽然最上面的单元格有点扭曲,但修复它是删除错误的空单元格的问题。 其余的表格被保留,可以粘贴/导入到 Word 中。
这两种策略有助于在 LaTeX 之外使用 stargazer。 希望能帮助到你。
除了前面的答案,也许作为一个更简单的解决方案,stargazer 可以在 html 代码中输出表格,这样当 Rmd 文件被编织成 html 时,会创建一个表格而不是 tex 代码。 我相信stargazer
功能现在可以通过设置type = 'html'
直接导出到 html 。
例如,给定模型拟合lm1
,您将在 Rmd 文件中使用以下代码:
stargazer(lm1, type = 'html')
无论您希望最终输出是 html 还是 pdf,这都有效。
回到这个问题。
我想使用相同的降价文件在带有 knitr 的 RStudio 中生成 html 和 pdf 输出。 也就是说,在 RStudio 中,我想按下 knit 按钮,并可以选择编织 HTMl 输出或 pdf 输出。 目前,我对编写 word/OpenOffice 文档没有太大兴趣。
我使用了来自 Jake Russ 的非常有用的观星者备忘单。 这锻炼了观星者的大部分功能。 它是一个 R MArkdown 文件,为那些产生 stargazer 输出的块设置了块选项 results='asis'。
stargazer 命令本身有一个参数“type”。 默认值为 type='latex' 在 Jake Russ 的用于生成网页的备忘单中,始终使用 type='html'。
如果您尝试将其编织成 pdf,这根本不起作用。 表格以长列表的形式出现,每行一个表格单元格,没有格式,占用很多页面,没有格式。
为了让我在 RStudio 中生成漂亮的 pdf,我可以做出的最小更改是全局替换所有
type='html'
和
type='latex'
(请注意,两者都出现在文档的文本中,以及 stargazer 命令中,因此需要小心!)
这行得通! 据我所知,pdf 是网页的忠实复制品,这正是我想要的。
尝试编织 OpenOffice 文档,如果我离开
type='latex'
输出中的每个表都由以下文本替换:-
% Table created by stargazer v.5.2 by Marek Hlavac, Harvard University. E-mail: hlavac at fas.harvard.edu % Date and time: Tue, Sep 01, 2015 - 22:22:29
如果我恢复
type='html'
然后每个表格都被写入,每行一个单元格,在页面的一侧没有格式化!
Stargazer 非常棒,但有一段时间没有更新,因此不是专门为与knitr
或 RStudio 的交互式查看器选项进行交互而设计的。 缺乏交互式查看和自动 html/latex 检测会导致至少两个问题:
对于希望在 RStudio 中易于阅读的内联输出的 R 新用户来说,这尤其令人困惑
当编织大型 html 或乳胶表需要时间时,在更复杂的文档中也会令人沮丧
下面我围绕名为starviewer
的stargazer
函数创建了一个简单的包装器,它执行以下操作:
有关 RStudio 的查看器功能rstudioapi::viewer()
的更多信息,请参阅: https ://rstudio.github.io/rstudio-extensions/pkgdown/rstudioapi/reference/viewer.html
以下四个代码块应在标准 R 降价文档中工作,并在编织时自动分配正确的类型(乳胶或 html)。 它们还应该以交互方式运行并内联输出和/或输出到查看器窗格。
最后,为了将观星表自动转换为包含 Word 的格式(使用 html 输出的图像),请参阅此解决方案: https ://stackoverflow.com/a/63563742/893399
```{r load_packages}
# good to load stargazer for regular usage
library(stargazer)
```
```{r starviewer_function}
# create wrapper around stargazer
starviewer <- function(...) {
# make sure stargazer is available
require(stargazer)
# assume text output but check for latex or html
star_format <- "text"
if(knitr::is_latex_output()) {star_format <- "latex"}
if(knitr::is_html_output()) {star_format <- "html"}
# if latex, just run stargazer as usual
if (star_format == "latex") {
stargazer::stargazer(...)
} else {
# if not latex, run stargazer in text / html (or both)
dir <- tempfile()
dir.create(dir)
htmlFile <- file.path(dir, "tempfile.html")
stargazer::stargazer(..., type = star_format, out = htmlFile)
rstudioapi::viewer(htmlFile)
}
}
```
```{r run_models}
lm1 <- lm(mpg ~ wt, data = mtcars )
lm2 <- lm(mpg ~ wt + am, data = mtcars )
```
```{r create_table, results = 'asis'}
starviewer(lm1, lm2)
```
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.