FMM*_*FMM 8 loops r r-markdown
我希望能够在循环中创建 RMarkdown 块。我尝试通过for循环来完成此操作,但没有取得太大成功。我想这可能可以通过 实现,就像在闪亮的应用程序中lapply进行创建一样。UIs然而,到目前为止我还没有取得任何成功。
代表:
---
title: "Untitled"
output:
html_document:
theme: united
highlight: tango
toc: true
toc_float:
collapsed: false
smooth_scroll: false
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE)
```
```{r}
library(dplyr)
library(ggplot2)
df <- datasets::iris %>%
dplyr::as_tibble()
```
## setosa
```{r}
df %>%
dplyr::filter(Species == "setosa") %>%
ggplot2::ggplot(ggplot2::aes(Sepal.Length, Petal.Length)) +
ggplot2::geom_point()
```
## versicolor
```{r}
df %>%
dplyr::filter(Species == "versicolor") %>%
ggplot2::ggplot(ggplot2::aes(Sepal.Length, Petal.Length)) +
ggplot2::geom_point()
```
## virginica
```{r}
df %>%
dplyr::filter(Species == "virginica") %>%
ggplot2::ggplot(ggplot2::aes(Sepal.Length, Petal.Length)) +
ggplot2::geom_point()
```
Run Code Online (Sandbox Code Playgroud)
我的目标是创建标题(setosa、versicolor 和 virginica)和带有循环的块。
例如:
for(i in c("setosa", "versicolor", "virginica")) {
## i
df %>%
dplyr::filter(Species == i) %>%
ggplot2::ggplot(ggplot2::aes(Sepal.Length, Petal.Length)) +
ggplot2::geom_point()
}
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一点有什么想法吗?
如果你想在循环中创建标题+输出,你可以这样做:
```{r species_loop, results='asis'}
for(i in c("setosa", "versicolor", "virginica")) {
cat(paste0("\n\n## ", i, "\n"))
p <- df %>%
dplyr::filter(Species == i) %>%
ggplot2::ggplot(ggplot2::aes(Sepal.Length, Petal.Length)) +
ggplot2::geom_point()
print(p)
}
```
Run Code Online (Sandbox Code Playgroud)
所以:
results='asis'允许将cat()输出解释为 Markdown 语法cat()使用所需的 markdown 语法来生成标题(由一些换行符包围以确保其被正确解释)print()在循环内显式绘制情节。