相关疑难解决方法(0)

使用results ='asis'以编程方式将标题和绘图插入到具有R markdown的相同代码块中

results = 'asis'Rmarkdown中的块选项允许用户轻松动态创建包括标题的文本.但是,我希望动态创建带有该asis选项的标头,但随后在相同的代码块中插入一些图形.

我能找到的最相关的答案是:以编程方式插入带有R markdown的文本,标题和列表,但这个问题的答案不允许这些动态标题中的动态标题和图表.

这是一个简单的可重复的例子,展示了我能够和不能实现的目标 results = 'asis'

下面的代码完成了我的预期,为每个Species创建一个标头.

---
output: html_document
---
```{r echo = FALSE, results ='asis'}
for(Species in levels(iris$Species)){
  cat('#', Species, '\n')
}
```
Run Code Online (Sandbox Code Playgroud)

这里的代码直接放在我想要的地方.理想情况下,下面的代码会为每个Species生成一个标题,每个标题下面都有一个图.相反,它会setosa在输出文件中生成单个标头,然后是三个图.

---
output: html_document
---
```{r echo = FALSE, results ='asis'}
library(ggplot2)
for(Species in levels(iris$Species)){
  cat('#', Species, '\n')
  p <- ggplot(iris[iris$Species == Species,], aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_point()
  print(p)
}
```
Run Code Online (Sandbox Code Playgroud)

有没有办法在每个标题下动态生成3个标题?

plot r ggplot2 knitr r-markdown

11
推荐指数
1
解决办法
2406
查看次数

在“asis”R Markdown 块中初始化 JS 渲染器的推荐方法

'asis' 块对于在 Markdown 文档中输出对象列表非常有用,请参阅以下示例:HighcharterDTLeaflet,...

但是,在上面的示例中,如果渲染器在前一个块中没有被调用一次,则对象列表将不会打印,以便它被初始化:这是一个棘手的解决方法,我通过试验找到了更多解决方案/错误比通过在文档中查找它更容易。

这是一个可重现的问题,也发布在https://github.com/rstudio/rmarkdown/issues/1877上:

---
title: "Test"
output:
  html_document
---



```{r,echo=F}
library(DT)
library(rmarkdown)
library(purrr)
library(knitr)

df_list <- list("cars" = mtcars, "flowers" = iris)

knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE)
```

```{r}
# If this first initialization isn't run, tabs won't print
DT::datatable(data.frame())
```

# Test tabs {.tabset}

```{r, results='asis' }
imap(df_list, ~{
  cat('## Subtab ',.y,'\n')
  cat('\n')
  DT::datatable(.x) %>%
    htmltools::tagList() %>% as.character() %>% cat() })

```
 

  
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown

7
推荐指数
2
解决办法
1021
查看次数

标签 统计

knitr ×2

r ×2

r-markdown ×2

ggplot2 ×1

plot ×1