knitr缓存输出存储在哪里?

时间:2014-05-18 12:25:57

标签: r knitr

在缓存目录中,可以使用lazyLoad查看块末尾的环境。但是存储的块的输出(如果编译文档将打印)会在哪里存储?

1 个答案:

答案 0 :(得分:3)

使用来源!

查看此处的源代码https://github.com/yihui/knitr/blob/master/R/cache.R

您可以看到此处(在new_cache函数内)

中解释了该机制
# when cache=3, code output is stored in .[hash], so cache=TRUE won't lose
# output as cacheSweave does; for cache=1,2, output is the evaluate() list
cache_output = function(hash, mode = 'character') {
  get(sprintf('.%s', hash), envir = knit_global(), mode = mode, inherits = FALSE)
}

即。它作为对象存储在knit_global environemnt`

您可以按ls(knitr::knit_global(), all = TRUE)

检查这些对象

即。

下面的3个简单块
```{r, cache=TRUE}
summary(cars)
```

```{r }
 ls(knitr::knit_global(), all = TRUE)

```


```{r }
 get(ls(knitr::knit_global(), all = TRUE)[1], knitr::knit_global())

```

提供以下输出

summary(cars)
##      speed           dist    
##  Min.   : 4.0   Min.   :  2  
##  1st Qu.:12.0   1st Qu.: 26  
##  Median :15.0   Median : 36  
##  Mean   :15.4   Mean   : 43  
##  3rd Qu.:19.0   3rd Qu.: 56  
##  Max.   :25.0   Max.   :120
 ls(knitr::knit_global(), all = TRUE)
## [1] ".Preview-2b40490e2591_cache/unnamed-chunk-1_766fcb86fd875984b372e3c23210bfad"
## [2] "metadata"
 get(ls(knitr::knit_global(), all = TRUE)[1], knitr::knit_global())
## [1] "\n```r\nsummary(cars)\n```\n\n```\n##      speed           dist    \n##  Min.   : 4.0   Min.   :  2  \n##  1st Qu.:12.0   1st Qu.: 26  \n##  Median :15.0   Median : 36  \n##  Mean   :15.4   Mean   : 43  \n##  3rd Qu.:19.0   3rd Qu.: 56  \n##  Max.   :25.0   Max.   :120\n```"

如果已退出R,则可以使用load命令从缓存文件夹中的文件* .RData加载数据。另外,要输出get的结果,请考虑使用cat来转换" \ n"成行,应该看起来像原始输出。