gpt4 book ai didi

r - 使用 knitr 通过循环创建部分

转载 作者:行者123 更新时间:2023-12-04 17:15:18 25 4
gpt4 key购买 nike

请参阅此可重现示例:

---
title: "test"
output: html_document
---

## foo

```{r}
plot(1:3)
```

## bar

```{r}
plot(4:7)
```

## baz

```{r}
plot(8:12)
```

我希望能够自动创建这些部分,因为在进一步分析之前我不知道它们会有多少。

我的输入是:
my_list   <- list(foo = 1:3, bar = 4:7, baz = 8:12)
my_fun <- plot
my_depth <- 2

理想的答案(尽管我欢迎任何改进)将帮助我建立一个 mdapply功能,以便我可以运行:
```{r}
mdapply(X = my_list, FUN = my_fun, title_depth = my_depth)
```

并获得相同的输出。

最佳答案

R包 pander 可以即时生成 Pandoc 的 Markdown 。

关键是使用块选项 results='asis'告诉 R Markdown 将 pander 的输出呈现为 Markdown。
您只需要小心生成有效的 Markdown!

尝试这个:

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

## A function that generates sections

```{r}
library(pander)

create_section <- function() {

# Inserts "## Title (auto)"
pander::pandoc.header('Title (auto)', level = 2)

# Section contents
# e.g. a random plot
plot(sample(1000, 10))

# a list, formatted as Markdown
# adding also empty lines, to be sure that this is valid Markdown
pander::pandoc.p('')
pander::pandoc.list(letters[1:3])
pander::pandoc.p('')
}
```

## Generate sections

```{r, results='asis'}
n_sections <- 3

for (i in seq(n_sections)) {
create_section()
}
```

它看起来仍然很黑客,但 Markdown 有其局限性......

关于r - 使用 knitr 通过循环创建部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51158486/

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