【发布时间】:2013-06-15 04:14:05
【问题描述】:
问题已解决,详情请参阅答案。
我想在更强大的服务器上运行一些代码(使用knitr),然后也许可以在我自己的笔记本电脑上进行一些小改动。即使是复制整个文件夹,在本地重新编译时似乎会重建缓存,有没有办法避免这种情况并实际使用缓存中的结果?
【问题讨论】:
问题已解决,详情请参阅答案。
我想在更强大的服务器上运行一些代码(使用knitr),然后也许可以在我自己的笔记本电脑上进行一些小改动。即使是复制整个文件夹,在本地重新编译时似乎会重建缓存,有没有办法避免这种情况并实际使用缓存中的结果?
【问题讨论】:
更新:问题来自不同机器上的不同版本的knitr。
理论上,是的——如果您不更改任何内容,缓存将被保留。在实践中,您必须仔细检查“小变化”是什么。 The documentation pagefor cache 已经说明什么时候会重建缓存,需要检查三个条件是否都满足。
【讨论】:
knitr版本相同,所以检查library(knitr); sessionInfo()
knitr的版本其实是不一样的。感谢您的建议,我将尝试在两台机器上使用相同的版本重做实验,希望这能解决问题。
knitr 编译时,缓存功能按我的预期工作。非常感谢您的帮助。
我想知道除了@Yihui 的回答之外,从一台机器复制到另一台机器的过程是否会改变文件的日期时间,即使没有任何变化,它们也会显得过时。
复制后查看所涉及文件的日期。如果您能确定哪些文件需要比其他文件更新,那么touching 他们可能会阻止重建。
另一种选择是直接粘贴已损坏的部分,这样它们就不会重新运行(尽管这意味着如果您更改这些部分中的任何内容,您必须重新运行并手动重新粘贴)。
【讨论】:
touch以正确的顺序对它们进行处理似乎不太实用。我想这同样适用于手动粘贴,但我不太确定我理解你的意思。再次感谢。