Подтвердить что ты не робот

Как читать кеш-книжку/Rmd в интерактивном сеансе?

У меня есть файл Rmd с большим количеством кэшированных фрагментов кода.

Теперь я хочу продолжить разработку этого script, используя интерактивный сеанс, чтобы поиграть и протестировать различные решения, прежде чем помещать окончательный код в новый фрагмент документа.

С простым R script я мог бы просто загрузить его, чтобы получить мой интерактивный сеанс на уровне с последней строкой script. Однако это приведет к (повторению) выполнения всего кода в интерактивном сеансе.

Я хочу прочитать мой файл Rmd в интерактивном сеансе, игнорируя часть Markdown и используя существующий кэш knitr, в идеале без создания какого-либо вывода.

Как я могу это сделать?

PS: Я не ищу какой-то определенный IDE-способ, чтобы установить это, но для команды, которую я могу запускать из простого сеанса R в любом эмуляторе терминала.

4b9b3361

Ответ 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')

Обязательно укажите имя файла без суффикса.