我正在尝试创建一个rmarkdown文件,该文件动态加载带有预定义注释的绘图对象列表。下面列出了最小的示例代码:
目前,此块在多个级别失败:
1)情节没有正确显示 - 我试图将htmltools::tagList(ls_ply)
放在最后,它会抛出错误。
2)我希望将评论作为标题,但是,我知道如果我在块开头应用results='asis'
,它将禁用该情节。
```{r, echo=FALSE, message=FALSE}
library(plotly)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
art1 <- list(viz = p1, comment = 'article1')
p2 <- qplot(carat, price, data=dsamp, colour=carat)
art2 <- list(viz = p2, comment = 'article2')
ls_ply <- lapply(list(art1,art2),function(art){
cat('## ',art$comment,'\n')
art$viz
})
```
答案 0 :(得分:0)
对于ggplot
图:
```{r, echo=FALSE, message=FALSE, results='asis'}
library(ggplot2)
dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
p1 <- qplot(carat, price, data=dsamp, colour=clarity)
art1 <- list(viz = p1, comment = 'article1')
p2 <- qplot(carat, price, data=dsamp, colour=carat)
art2 <- list(viz = p2, comment = 'article2')
art <- list(art1, art2)
for (i in seq_len(length(art))) {
cat(sprintf("\n\n## %s\n", art[[i]]$comment))
print(art[[i]]$viz)
}
```
但是,这不能扩展到plotly
个对象。这是一个已知问题,只有解决方案是重新组合所有图并立即绘制它们,这不是你想要的。
使用knit_expand可能有所帮助,但knit_child
对我不起作用。