gpt4 book ai didi

r - 在循环中创建 R Markdown block

转载 作者:行者123 更新时间:2023-12-04 11:20:42 26 4
gpt4 key购买 nike

我希望能够在循环中创建 RMarkdown 块。我曾尝试通过 for 执行此操作循环,没有太大的成功。我想这可能通过 lapply 成为可能,就像创建 UIs 一样在一个 Shiny 的应用程序中。但是,到目前为止,我还没有取得任何成功。

代表:

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

我的目标是创建标题(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()
}

关于如何实现这一点的任何想法?

最佳答案

如果要在循环中创建标题 + 输出,可以执行以下操作:

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

所以:
  • 使用 results='asis'允许输出您 cat()被解释为 Markdown 语法
  • cat()使用所需的 Markdown 语法来生成标题(由一些换行符包围以确保正确解释)
  • 明确 print()在循环中绘制绘图。
  • 关于r - 在循环中创建 R Markdown block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57034529/

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