Как читать кеш-книжку/Rmd в интерактивном сеансе?
У меня есть файл Rmd
с большим количеством кэшированных фрагментов кода.
Теперь я хочу продолжить разработку этого script, используя интерактивный сеанс, чтобы поиграть и протестировать различные решения, прежде чем помещать окончательный код в новый фрагмент документа.
С простым R
script я мог бы просто загрузить его, чтобы получить мой интерактивный сеанс на уровне с последней строкой script.
Однако это приведет к (повторению) выполнения всего кода в интерактивном сеансе.
Я хочу прочитать мой файл Rmd
в интерактивном сеансе, игнорируя часть Markdown и используя существующий кэш knitr
, в идеале без создания какого-либо вывода.
Как я могу это сделать?
PS: Я не ищу какой-то определенный IDE-способ, чтобы установить это, но для команды, которую я могу запускать из простого сеанса R в любом эмуляторе терминала.
Ответы
Ответ 1
Я думаю, что запуск library("knitr"); knit("foo.Rmd")
в сеансе console/R - это самый простой способ сделать это, хотя он будет переписывать foo.md
, цифры и т.д. (слишком занят/ленив, чтобы проверить его на данный момент.)
Возможно, вы могли бы спрятаться в директории cache
и напрямую прочитать кешированные файлы, но это будет намного больше работы/сложнее.
Ответ 2
Я создал функции, которые загружают объекты из кэшированных фрагментов в интерактивный сеанс R. Функции lazyload_cache_dir
и lazyload_cache_labels
и доступны в qwraps2 версия > 0.2.4
Подробный пример использования этих функций
здесь:
Краткий обзор:
Скажем, у вас есть файл report.Rmd
---
title: "A Report"
output: html_document
---
```{r first-chunk, cache = TRUE}
fit <- lm(mpg ~ wt + hp, data = mtcars)
x <- pi
```
```{r second-chunk, cache = TRUE}
fit <- lm(mpg ~ wt + hp + am, data = mtcars)
xx <- exp(1)
```
После вязания вы попадаете в этот каталог проекта
.
├── report_cache
│ └── html
│ ├── first-chunk_bf368425c25f0c3d95cac85aff007ad1.RData
│ ├── first-chunk_bf368425c25f0c3d95cac85aff007ad1.rdb
│ ├── first-chunk_bf368425c25f0c3d95cac85aff007ad1.rdx
│ ├── __packages
│ ├── second-chunk_2c7d6b477306be1d4d4ed451f2f1b52a.RData
│ ├── second-chunk_2c7d6b477306be1d4d4ed451f2f1b52a.rdb
│ └── second-chunk_2c7d6b477306be1d4d4ed451f2f1b52a.rdx
├── report.html
└── report.Rmd
и вы хотите загрузить объекты из first-chunk
.
lazyload_cache_labels("first-chunk", path = "report_cache/html")
## Lazyloading report_cache/html/first-chunk_bf368425c25f0c3d95cac85aff007ad1
ls()
## [1] "fit" "x"
См. сообщение в блоге для получения подробной информации о загрузке только целого каталога кешированных объектов или загрузки определенных объектов из кешированного фрагмента.
Ответ 3
Внутри knitr использует lazyLoad
для загрузки кешированных результатов, и вы также можете:
lazyLoad('knitr_cache_dir/chunk_2c7d6b477306be1d4d4ed451f2f1b52a')
Обязательно укажите имя файла без суффикса.