循环中的Rmarkdown,";编织html";按钮与rmarkdown::Render的输出不同
编辑
此问题不一定只与{htmlTable}有关。呈现已使用{kableExtra}包(see also this thread)设置样式的html表格时也会发生同样的情况。原始问题
我正在RMarkdown中工作,试图用htmlTable包中的htmltables
在循环中呈现文档。当我在RStudio中按下"编织"按钮时,一切都很正常。但是当我使用render()
函数时,不会打印循环中的htmltables
,但会打印循环之前的表。
我阅读了该&q;针织&按钮,渲染函数也执行同样的操作,因此我不明白有什么问题?
这是一个包含hmtlTables
:
.Rmd
文件的工作示例
---
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, '
' ) )
print(ggplot(a*i, aes(x = V1, y = V2)) + geom_point())
print(htmlTable(a*i))
cat('
')
}
```
我需要使用不同的参数自动生成许多报告,因此我需要将其与render()
一起使用。
解决方案
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, '
' ) )
print(ggplot(a*i, aes(x = V1, y = V2)) + geom_point())
writeLines(htmlTable(a*i))
cat('
')
}
```
不过,我还是觉得有点奇怪,因为我相信编织按钮在引擎盖下面使用了rmarkdown::Render(),但在本例中它们有不同的行为。
相关文章