【发布时间】:2019-03-11 02:07:34
【问题描述】:
我刚刚开始测试 Rmarkdown 以用于创建数据集的码本,我对它在使用 cache = TRUE 时的行为感到非常困惑。我正在使用 RStudio 1.1.463 运行它。 rmarkdown_1.11、knitr_1.21 和 tidyverse_1.2.1。
采用以下示例代码,其中包含我感兴趣的一些文档和块选项,附加我通常使用的所有库(注意我在几个地方添加了“|”以便在 SO 上进行适当的格式化):
---
title: "Test"
date: 2019-03-11
output:
html_document
---
```{r header, echo= FALSE, include=FALSE, cache = TRUE, warning= FALSE}
attach(mtcars)
library(sf)
library(tidyverse)
library(knitr)
library(summarytools)
opts_chunk$set(echo = FALSE, error = TRUE)
|```
# mtcars dataset heading
## map of car purchases
## cyl variable
```{r}
kable(descr(cyl))
|```
当我第一次点击 RStudio 上的 Knit 按钮时(没有现有的缓存文件夹),结果符合预期。如果我再次点击 Knit,会发生以下情况:
-
找不到
cyl -
kable、descr都抛出“找不到函数”错误
如果显式调用父包/数据帧,这些问题就会消失。如果cache = FALSE 没有问题。
为什么cache = TRUE 会触发这种行为?对于这个密码本,我想附加最终的数据集,然后为每个变量提供一些摘要。我还想生成几个带有许多变量的sf 映射。我想在这样的标题块中处理所有内容,然后在整个文档中调用各个位。我应该换个思路吗?
顺便说一句,我不太明白为什么有必要在 Rmarkdown 文档上显式地library(knitr),因为我认为它是“编织”文档的关键包...如果我删除它,opts_chunk 是没找到。
感谢您的帮助!
【问题讨论】:
标签: r r-markdown