Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R knitr:是否可以跨不同的机器使用缓存结果?_R_Knitr - Fatal编程技术网

R knitr:是否可以跨不同的机器使用缓存结果?

R knitr:是否可以跨不同的机器使用缓存结果?,r,knitr,R,Knitr,问题已解决,有关详细信息,请参阅答案 我想在功能更强大的服务器上运行一些代码(使用knitr),然后可能在我自己的笔记本电脑上进行一些小的更改。即使在整个文件夹中复制,缓存似乎在本地重新编译时重建,有没有办法避免这种情况并实际使用缓存中的结果?更新:问题源于不同机器上不同版本的knitr 理论上说,是的——如果您不更改任何内容,缓存将被保留。在实践中,您必须仔细检查“小变化”是什么。for cache已经解释了何时重建缓存,您需要检查这三个条件是否都满足。除了@Yihui的回答之外,我想知道从

问题已解决,有关详细信息,请参阅答案


我想在功能更强大的服务器上运行一些代码(使用
knitr
),然后可能在我自己的笔记本电脑上进行一些小的更改。即使在整个文件夹中复制,缓存似乎在本地重新编译时重建,有没有办法避免这种情况并实际使用缓存中的结果?

更新:问题源于不同机器上不同版本的
knitr



理论上说,是的——如果您不更改任何内容,缓存将被保留。在实践中,您必须仔细检查“小变化”是什么。for cache已经解释了何时重建缓存,您需要检查这三个条件是否都满足。

除了@Yihui的回答之外,我想知道从一台机器复制到另一台机器的过程是否会更改文件的日期时间,从而使它们看起来过时,即使没有任何更改

复制后查看相关文件上的日期。如果您可以确定哪些文件需要比其他文件更新,则触摸它们可能会阻止重建


另一种选择是直接粘贴已更改的部分,这样它们就不会重新运行(尽管这意味着如果您更改了这些部分中的任何内容,您必须手动重新运行和重新粘贴)。

非常感谢您的回答。在另一台机器上重新编译之前,我复制了所有文件夹,没有做任何更改,所以我想这3个条件都满足了。我现在注意到这两台机器运行不同版本的R(即先运行2.15.1,然后本地运行3.0)。但是,我没有使用cache.extra选项,版本的差异是否仍然会促使缓存重建?另一方面,我还想知道@Greg提到的日期时间问题是否会产生影响。日期/时间并不重要。R版本也不重要。您只需确保两台机器上的
knitr
版本相同,因此请检查
library(knitr);sessionInfo()
我刚刚检查了一下,发现knitr的版本实际上是不同的。谢谢你的建议,我将尝试在两台机器上用相同的版本重新做这个实验,希望这能解决问题。@user2252705很高兴你解决了这个问题;通常情况下,这不应该是一个问题——我一直在尝试不破坏不同版本的knitr的缓存,但有时我不得不说,实验是成功的,当在两台机器上使用相同版本的
knitr
编译时,缓存功能的工作方式与我预期的一样。再次非常感谢你的帮助。非常感谢你的回答。缓存中有许多文件,因此按正确的顺序触摸它们似乎不太实际。我想这同样适用于手动粘贴,尽管我不太确定我是否理解你的意思。再次感谢。@user2252705,我所说的“粘贴”是指从要缓存的部件中获取输出并直接粘贴到文件中,而不是使用生成输出的命令。