You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RStudio RMarkdown knitr中取消read_chunk的缓存?

解决R Markdown中外部R文件修改后不更新输出的问题

嘿,这个问题我太熟了——这就是knitr的缓存机制在“偷懒”呢!当你运行{r setup}块时,knitr默认会缓存它的执行结果,哪怕你修改了外部的example.R,只要setup块的缓存没被触发更新,就会一直用之前加载的旧代码结果。

下面给你几个实用的解决办法:

  • 禁用setup块的缓存:直接在setup块的选项里加上cache=FALSE,修改后的块定义如下:

    {r setup, cache=FALSE}
    source("example.R")
    

    这样每次运行setup块时,都会重新读取并执行example.R的最新内容,彻底避免缓存干扰。

  • 手动清除现有缓存:如果你不想修改块设置,可以手动清理缓存文件:

    • 找到你的Rmd文件所在目录下的_cache文件夹,删除里面对应setup块的缓存子目录;
    • 或者在RStudio中,点击Knit按钮旁边的下拉箭头,选择「Clear Knitr Cache」,之后再重新运行代码块即可。
  • 让缓存自动检测外部文件变化:如果你想保留缓存功能(比如setup块里有其他耗时操作),可以用cache.extra参数让knitr跟踪example.R的修改时间。修改setup块如下:

    {r setup, cache=TRUE, cache.extra=file.mtime("example.R")}
    source("example.R")
    

    这样只要example.R的内容被修改(文件修改时间变化),knitr就会自动重新运行setup块,加载最新的代码。

内容的提问来源于stack exchange,提问作者pluke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:40:29