`bookdown`/`rmarkdown`/`knitr`: как выполнить некодовую последовательную обработку?

Программно мой bookdown Проект осуществляется следующим образом:

  1. Чтение в необработанных данных - производит все виды статистики.
  2. Предварительная обработка данных (логарифмизация, нормализация, импутация) - создает различные графики для мониторинга возникших дефектов на уровне популяции.
  3. PCA для анализа QC - создает графики для PCA и точек данных с преобладанием нагрузки.
  4. Анализ дифференциальной экспрессии - производит графики вулканов и графики, характеризующие выраженные дифференциально выраженные особенности.
  5. Анализ чрезмерной представленности дифференциально выраженных признаков из 4. в различных системах биологической онтологии - приводит примеры гистограмм для обогащенных категорий.

У меня есть анализ и рассказ, красиво интегрированный с помощью bookdown, позволяющий эффективно отбрасывать на лету временные (значительные) наборы данных /ggplot2 объекты (данные до / после преобразования и т. д.).

ОДНАКО: целевая аудитория в основном / только заинтересована в 4. и 5., что приводит меня к стремлению к следующей структуре:

4., 5. Приложение (1., 2., 3.)

Есть ли другой способ, кроме предварительных вычислений 1.-5. а затем вернуться в целевом порядке - я бы предпочел не накапливать все эти ggplot2 объекты в памяти, если это вообще возможно.

1 ответ

Решение

Вы можете сделать следующее:

  1. Разделите шаги 1-3 и 4-5 на два отдельных *.Rmd файлы, скажем 123.Rmd а также 45.Rmd,
  2. Добавьте кусок кода в начало 45.md это вяжет 123.Rmd в 123.md:

```{r knit123, include = FALSE} knitr::knit("123.Rmd", output = "123.md") ```

Это сгенерирует выходные данные шагов 1-3 в Markdown и сделает все созданные объекты доступными для шагов 4-5.

  1. Добавьте кусок кода в конец 45.Rmd это читает 123.md печатает его содержание:

```{r include123, results = "asis"} cat(readLines("123.md"), sep = "\n") ```

results = "asis" предотвратит дальнейшую обработку, так как это уже действующая уценка.

  1. Вязать 45.Rmd в любой целевой формат вы хотите.

редактировать (1):

TL; DR: вместо того, чтобы сохранять объект из шагов 1-3 в памяти на протяжении шагов 4-5, чтобы потом распечатать их, сначала напечатайте их и сохраните результаты на диске.


редактировать (2):

Поскольку вы прямо упомянули bookdown: я не удивлюсь, если бы была опция YAML для включения файла Markdown в конце процесса вязания (что-то вроде include-after: 123.md); но я не знаю наверняка по макушке, и мне лень самому это искать.;-)

Другие вопросы по тегам