如何在 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

这可能吗?

下面我创建了一个名为 starviewerstargazer 函数的简单包装器,它执行以下操作:

  • 检查文件是否被编织成乳胶或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)

```