如何在 Rstudio 的源代码窗格中渲染 stargazer 的输出?
How to render output of stargazer in Rstudio's source pane?
首先让我说一下,当我编织一个完整的文档时,stargazer 的输出符合预期。我想做的是在我的代码块下的源窗格中呈现它,就像我可以使用任何其他类型的代码(包括绘图)一样。到目前为止,我发现的最好的设置是设置 startype<-ifelse(is.null(opts_knit$get("rmarkdown.pandoc.to")), 'text', 'html')
,然后在我调用 stargazer 设置 type=startype
时,当我编织时,我得到了完全格式化的版本,但在我的代码块中我仍然得到了一些东西。我希望能够获得完全格式化的版本,这样我就可以根据最终的外观调整参数,而不必编织整个东西。
我正在 Windows 使用 Rstudio 版本 1.4.1106
这可能吗?
下面我创建了一个名为 starviewer
的 stargazer
函数的简单包装器,它执行以下操作:
- 检查文件是否被编织成乳胶或html
- 如果文档未编织成乳胶,则输出为文本或 html
- 当 运行 在 RStudio 中交互时,输出可以内联显示为文本 and/or 在查看器窗格中显示为 html
我不是 rstudioapi::viewer()
选项的专家,但这在我的系统上运行良好。
有关 rstudioapi 的更多信息,请参阅:https://rstudio.github.io/rstudio-extensions/pkgdown/rstudioapi/reference/viewer.html
将以下四个代码块复制到一个 Rmd 中,它们应该能够 运行 交互或编织到乳胶或 html 自动取决于用户操作。
```{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)
```
首先让我说一下,当我编织一个完整的文档时,stargazer 的输出符合预期。我想做的是在我的代码块下的源窗格中呈现它,就像我可以使用任何其他类型的代码(包括绘图)一样。到目前为止,我发现的最好的设置是设置 startype<-ifelse(is.null(opts_knit$get("rmarkdown.pandoc.to")), 'text', 'html')
,然后在我调用 stargazer 设置 type=startype
时,当我编织时,我得到了完全格式化的版本,但在我的代码块中我仍然得到了一些东西。我希望能够获得完全格式化的版本,这样我就可以根据最终的外观调整参数,而不必编织整个东西。
我正在 Windows 使用 Rstudio 版本 1.4.1106
这可能吗?
下面我创建了一个名为 starviewer
的 stargazer
函数的简单包装器,它执行以下操作:
- 检查文件是否被编织成乳胶或html
- 如果文档未编织成乳胶,则输出为文本或 html
- 当 运行 在 RStudio 中交互时,输出可以内联显示为文本 and/or 在查看器窗格中显示为 html
我不是 rstudioapi::viewer()
选项的专家,但这在我的系统上运行良好。
有关 rstudioapi 的更多信息,请参阅:https://rstudio.github.io/rstudio-extensions/pkgdown/rstudioapi/reference/viewer.html
将以下四个代码块复制到一个 Rmd 中,它们应该能够 运行 交互或编织到乳胶或 html 自动取决于用户操作。
```{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)
```