Rmarkdown HTML 渲染问题

Posted

技术标签:

【中文标题】Rmarkdown HTML 渲染问题【英文标题】:Rmarkdown HTML rendering issue 【发布时间】:2022-01-01 10:20:54 【问题描述】:

我正在尝试打印 html 表格列表,但由于某种原因,当我编织文档时,我得到了用于输出的原始 HTML 代码,而不是渲染的表格。示例:

---
title: "html-render-issue"
output: html_document
---
library(tidyverse)
library(gtsummary)

# this table renders correctly:
tbl_summary(iris)

# but this table does not!!
tables <- list(tbl_summary(iris), tbl_summary(cars))
print(tables)

我不明白为什么会这样,我尝试使用 for 循环索引到列表中

for (i in 1:2) 
  print(tables[[i]])

但这似乎也不起作用!没有做tables[[1]]; tables[[2]] 等(确实有效),有没有办法遍历列表并获得我想要的输出?

【问题讨论】:

【参考方案1】:

考虑在r 块中使用results = "asis",然后使用knitr::knit_print 代替print

```r, results = "asis", echo = FALSE
 library(gtsummary)

 # this table renders correctly:
 tbl_summary(iris)

 # but this table does not!!
 tables <- list(tbl_summary(iris), tbl_summary(cars))
 for (i in 1:2) 
   cat(knitr::knit_print(tables[[i]]))
 
```

-输出

【讨论】:

感谢阿克伦!你知道我最初尝试的问题是什么吗?我认为这与将参数视为输出而不是原始 html 的 print() 有关。但是,如果我尝试执行 for (i in 1:2) tables[[i]],我将在针织输出中一无所获! @HankLin 根据?knit_print -the chunk option render is a function that defaults to knit_print().【参考方案2】:

尝试在列表中添加%&gt;% as_gt()

---
title: "html-render-issue"
output: html_document
---
```r loop_print, results = 'asis'
library(tidyverse)
library(gtsummary)

tables <- list(tbl_summary(iris), tbl_summary(cars) %>%  as_gt())
walk(tables, print)               # walk from purrr package to avoid [[1]] [[2]]
```

【讨论】:

正是我想要的,谢谢!

以上是关于Rmarkdown HTML 渲染问题的主要内容,如果未能解决你的问题,请参考以下文章

使用没有 PDF 导航按钮的 rmarkdown 渲染导出为 PDF

shinyApp 没有将 Rmarkdown 文件呈现为 RStudio

rmarkdown::render() 不允许同时有多个用户?

R Markdown的Python替代品[关闭]

RMarkdown:使用 Rcpp 中的 rmarkdown:render-function 生成 pdf 文档

在查看器窗格中打开 R Markdown