2013-07-30 1 views
2

У меня есть вопрос.Markdown with knitr run два набора кода в одном компиляторе

Я создаю html-файл, используя R studio Markdown.

В моем файле уценки я надеюсь разделить R-код на два абзаца и запустить соответственно.

```{r cache=TRUE, echo=TRUE, include=FALSE} 
require(maps) 

``` 

Теперь я собираюсь запустить другой набор кода.

```{r} 
japan <- map("world", "japan", plot=T) 
``` 

Однако второй код не может быть запущен из-за того, что R не загрузил пакет карт.

Есть ли способ сохранить первый результат кода и передать его ко второму коду?

ответ

2

Почему вы используете cache=TRUE на первом куске? Именно здесь возникает проблема. Когда вы включаете кеш, помните, что кусок будет пропущен при следующем компиляции документа, а это значит, что require(maps) не будет выполнен.

knitr действительно пытается сохранить побочные эффекты как погрузочных пакетов (see documentation), но это работает только для кэшированных куски. Если вы загружаете пакет в кеш-память, но используете его в недоступном фрагменте, он не будет работать. Подводя итог,

  1. либо не использовать кэш
  2. или кэш использовать последовательно

Cache очень сложно. Обязательно внимательно прочитайте документацию, прежде чем вводить ее в эксплуатацию.

+0

Большое спасибо, Yihui. – user2620225

Смежные вопросы