循环中的Rmarkdown Htmltable,“编织HTML”按钮的输出与rmarkdown :: render不同

时间:2018-07-18 11:10:06

标签: html r r-markdown

我正在RMarkdown中工作,尝试以循环方式使用 htmlTable 包中的htmltables呈现文档。当我按下RStudio中的“编织”按钮时,一切正常。但是,当我使用render()函数时,不会打印循环中的htmltables,但是会打印循环之前的表。 我读到了“编织”按钮,并且渲染功能执行的操作相同,所以我不明白这是怎么回事?

这是带有.Rmd的{​​{1}}文件的工作示例:

hmtlTables

我需要使用不同的参数自动生成许多报告,因此需要与--- output: html_document --- ## htmlTables ```{r, results='asis'} library(data.table) library(htmlTable) library(ggplot2) a <- data.table(matrix(seq(1, 100, 5), ncol = 2)) htmlTable(a) for (i in 10:11) { cat( paste('## title no.', i, '\n' ) ) print(ggplot(a*i, aes(x = V1, y = V2)) + geom_point()) print(htmlTable(a*i)) cat('\n') } ``` 一起使用。

1 个答案:

答案 0 :(得分:0)

htmlTable定义了一个print方法,该方法似乎可以在新窗口中打印表格,将print()更改为writeLines()可以达到目的:

---
output: html_document
---

## htmlTables


```{r, results='asis'}
library(data.table)
library(htmlTable)
library(ggplot2)
a <- data.table(matrix(seq(1, 100, 5), ncol = 2))
htmlTable(a)
for (i in 10:11) {
    cat( paste('## title no.', i, '\n' ) ) 
    print(ggplot(a*i, aes(x = V1, y = V2)) + geom_point())
    writeLines(htmlTable(a*i))
    cat('\n')
}
```

但是我仍然觉得有些奇怪,因为我相信编织按钮在幕后使用了rmarkdown :: render(),但是在这种情况下它们具有不同的行为。