Я пытаюсь использовать ноутбуки RMarkdown / R для создания автоматического отчета на основе одного набора данных, разбитого по отделам. Интуитивно, я хочу использовать for
l oop, который фильтрует набор данных по одному отделу, предоставляет заголовок, отображает несколько графиков и таблиц, указывающих c для этого отдела, а затем создает разрыв страницы и начинается с следующий отдел.
Вот пример того, что я имею до сих пор. Проблемы с полученным кодом:
- Повсюду есть пробелы, наверняка связанные с использованием
dev.off()
и plot.new()
. Если я удаляю их, печатается только первый сюжет, а заголовки печатаются все вместе в начале. Если я включу вызовы dev.off
и plot.new
, я получу пустые графические заполнители. - Повсюду есть элементы NA. Я не уверен почему. Они не появляются при запуске кода в RStudio, только в результирующем выводе.
- Я не могу заставить работать заголовки и вести себя как H1, H2 et c. заголовки. Они отображаются как вывод кода.
Я неправильно подхожу к этому? Разве я не должен использовать для l oop, а вместо этого делать что-то еще? Если я возьму все из l oop и сделаю это вручную, это прекрасно работает.
```
---
title: "Demo Notebook"
output:
word_document: default
---
```{r echo=FALSE, message=FALSE, warning=FALSE, paged.print=TRUE, results= "asis"}
library(tidyverse)
library(knitr)
spp <- unique(iris$Species)
for (i in seq_along(spp)) {
print(paste0("# Species: ", spp[i]))
d <- iris %>%
filter(Species == spp[i])
# one kind of plot
p <- ggplot(d, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_smooth() +
ggtitle(spp[i])
print(p)
dev.off()
plot.new()
# another plot
q <- plot(d$Sepal.Length)
print(q)
dev.off()
# a table
print(kable(head(d)))
}
```