`bookdown`/`rmarkdown`/`knitr`: как выполнить некодовую последовательную обработку?
Программно мой bookdown
Проект осуществляется следующим образом:
- Чтение в необработанных данных - производит все виды статистики.
- Предварительная обработка данных (логарифмизация, нормализация, импутация) - создает различные графики для мониторинга возникших дефектов на уровне популяции.
- PCA для анализа QC - создает графики для PCA и точек данных с преобладанием нагрузки.
- Анализ дифференциальной экспрессии - производит графики вулканов и графики, характеризующие выраженные дифференциально выраженные особенности.
- Анализ чрезмерной представленности дифференциально выраженных признаков из 4. в различных системах биологической онтологии - приводит примеры гистограмм для обогащенных категорий.
У меня есть анализ и рассказ, красиво интегрированный с помощью bookdown
, позволяющий эффективно отбрасывать на лету временные (значительные) наборы данных /ggplot2
объекты (данные до / после преобразования и т. д.).
ОДНАКО: целевая аудитория в основном / только заинтересована в 4. и 5., что приводит меня к стремлению к следующей структуре:
4., 5. Приложение (1., 2., 3.)
Есть ли другой способ, кроме предварительных вычислений 1.-5. а затем вернуться в целевом порядке - я бы предпочел не накапливать все эти ggplot2
объекты в памяти, если это вообще возможно.
1 ответ
Вы можете сделать следующее:
- Разделите шаги 1-3 и 4-5 на два отдельных
*.Rmd
файлы, скажем123.Rmd
а также45.Rmd
, - Добавьте кусок кода в начало
45.md
это вяжет123.Rmd
в123.md
:
```{r knit123, include = FALSE}
knitr::knit("123.Rmd", output = "123.md")
```
Это сгенерирует выходные данные шагов 1-3 в Markdown и сделает все созданные объекты доступными для шагов 4-5.
- Добавьте кусок кода в конец
45.Rmd
это читает123.md
печатает его содержание:
```{r include123, results = "asis"}
cat(readLines("123.md"), sep = "\n")
```
results = "asis"
предотвратит дальнейшую обработку, так как это уже действующая уценка.
- Вязать
45.Rmd
в любой целевой формат вы хотите.
редактировать (1):
TL; DR: вместо того, чтобы сохранять объект из шагов 1-3 в памяти на протяжении шагов 4-5, чтобы потом распечатать их, сначала напечатайте их и сохраните результаты на диске.
редактировать (2):
Поскольку вы прямо упомянули bookdown: я не удивлюсь, если бы была опция YAML для включения файла Markdown в конце процесса вязания (что-то вроде include-after: 123.md
); но я не знаю наверняка по макушке, и мне лень самому это искать.;-)