gpt4 book ai didi

r - 使用结果 ='asis' 以编程方式插入 header 并使用 R markdown 在同一代码块中绘制

转载 作者:行者123 更新时间:2023-12-01 19:48:47 25 4
gpt4 key购买 nike

Rmarkdown 中的 results = 'asis' block 选项允许您轻松动态创建包括标题的文本。但是,我希望使用 asis 选项动态创建 header ,然后在同一代码块中插入一些图形。

我能找到的最相关的答案在这里:Programmatically insert text, headers and lists with R markdown ,但这个问题的答案不允许动态标题和这些动态标题中的绘图。

下面是一个简单的可重现示例,演示了我可以使用 results = 'asis' 实现什么,不能实现什么

下面的代码执行了我所期望的操作,为每个物种创建了一个 header 。

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

下面的代码没有达到我想要的效果。理想情况下,下面的代码将为每个物种生成一个标题,并在每个标题下方绘制一个绘图。相反,它会在输出文件中生成单个 setosa header ,后跟三个图。

---
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)
}
```

是否有某种方法可以动态生成 3 个标题,并在每个标题下绘制一个图?

最佳答案

您需要使用 cat('\n') 在绘图之后和标题之前添加一些新行:

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

关于r - 使用结果 ='asis' 以编程方式插入 header 并使用 R markdown 在同一代码块中绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43752095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com