[英]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.