在 R 中的 knitr 文档中插入 HTML 表

Insert HTML tables in knitr documents in R

我有许多不同的 HTML 文件,其中包含格式化的表格,我想将这些表格合并到 R 中的 knitr 报告中。不幸的是,我在将 HTML 文件加载到其中时遇到了一些问题R 并在我的 knitr 报告中包含表格。

HTML 文件是使用 MS Excel 中的 "save as htm" 函数和 stargazer 库创建的。它们在任何浏览器中都能完美显示。我的代码是:

```{r, echo=FALSE, return='asis'}
library(XML)
overview.html <- htmlParse("overview.htm")
print(overview.html)
```

在控制台中打印 "overview html" 时,我得到了正确的 html 代码。但是,在编织报告时,输出文档不包含我的代码,我收到以下错误:

Warning message:
XML content does not seem to be XML: 'overview.htm' 

我已经尝试了上述的几种变体(使用 htmlTreeParse,使用 print type = "html" 选项等)都无济于事。如果有人可以建议一种工作方式,那就太好了。

这是我的解决方案。将 html 读入 R 并使用 xtable 输出为 html 表

```{r, echo=FALSE, return='asis'}
library(xtable)
u = "http://en.wikipedia.org/wiki/List_of_airlines_of_Malaysia"
tables = as.data.frame(readHTMLTable(u)[1])
print(xtable(tables),type='html',comment=FALSE)
```

如果您想保留格式(并且不想打扰 XML/HTML 搅动),您可以使用 <iframe> 将完整的 HTML 文档嵌入到 knitr 文档中,例如这个:

```{r echo=FALSE, results='asis'}
tmp <- URLencode(paste(readLines("/path/to/table.htm"), collapse="\n"))

cat('<iframe src="data:text/html;charset=utf-8,', tmp ,
    '" style="border: none; seamless:seamless; width: 800px; height: 200px"></iframe>')
```

它不会显示在 RStudio 查看器中,但显示在真实浏览器中:

你需要调整 widthheight(我 could/should 在这个例子中让 height 少了一点),但你会得到你的完全 formatted/styled 以这种方式编织文档中的表格。

注意:这仅在编织到 HTML 时有效。