Как параметризовать встроенный код, текст вместе с фрагментом кода R в Rmarkdown - PullRequest
0 голосов
/ 26 февраля 2020

В моем отчете Rmarkdown большинство разделов имеют одинаковый текст, встроенный код и блок кода R. Можно ли параметризировать их? Например, на изображении ниже, возможно ли использовать что-то вроде l oop для их производства вместо того, чтобы повторять подобный код 3 раза?

enter image description here

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

В основном файле RMD,

library(tidyverse)

dat <- tibble(
  id = 1:3,
  fruit = c("apple", "orange", "banana"),
  sold = c(10, 20, 30)
)
res <- lapply(dat$id, function(x) {
  knitr::knit_child(
    'template.Rmd', envir = environment(), quiet = TRUE
  )
})
cat(unlist(res), sep = '\n')

В шаблоне. RMD,

current_dat <- filter(dat, id == x)
# Section: `r  current_dat$fruit`
current_dat %>% 
  ggplot(aes(x = fruit, y = sold)) + geom_col()
0 голосов
/ 26 февраля 2020

ИМХО, проще всего добиться этого, используя results = 'asis', а cat() ниже - это минимальный файл RMarkdown.

---
title: "Minimal example"
---

```{R results = "asis"}
for (i in 1:3) {
 x <- runif(10)
 cat("# section", floor(i), "\n")
 plot(x)
 # line break
 cat("\n\n")
}
```
...