像R.cache但在RAM中的东西

时间:2012-09-29 23:14:00

标签: r

只是想知道是否存在像 R.cache 这样的软件包,但不是硬盘驱动器而是使用RAM而不是吗?

或许在R中可能存在一些黑客攻击,以使 R.cache 包认为它使用硬盘驱动器,但是将它的缓存存储到RAM中的某种虚拟驱动器?

我还发现了这个很棒的question并尝试了 memoise 包,但事实证明它对于我的问题比R.cache慢,尽管它适用于RAM。

2 个答案:

答案 0 :(得分:5)

也许您可以使用R.cache制作RAM disk并将该驱动器指定为缓存的存储目标。

答案 1 :(得分:1)

您可以尝试panderevals功能custom cache引擎。

有关详细信息,请参阅上述链接,但简而言之:

  • 启用缓存:evalsOptions('cache', TRUE)(默认值)
  • 您可以设置分钟。 eval以秒为单位的时间,应缓存结果:evalsOptions('cache.time', 0.1)(默认值)
  • 指定要存储缓存值和哈希值的位置(disk与R environment):evalsOptions('cache.mode', 'environment')(默认值)

一个简短的例子:

> library(pander)

> # first time run
> system.time(evals('sapply(rep(mtcars$hp, 1e3), mean)'))
   user  system elapsed 
 12.269   0.020  12.414 

> # second call
> system.time(evals('sapply(rep(mtcars$hp, 1e3), mean)'))
   user  system elapsed 
  0.003   0.000   0.003 

> # check results any time without recomputing those
> str(evals('sapply(rep(mtcars$hp, 1e3), mean)')[[1]]$result)
 num [1:32000] 110 110 93 110 175 105 245 62 95 123 ...
> str(evals('sapply(rep(mtcars$hp, 1e3), mean)'))
List of 1
 $ :List of 6
  ..$ src   : chr "sapply(rep(mtcars$hp, 1000), mean)"
  ..$ result: num [1:32000] 110 110 93 110 175 105 245 62 95 123 ...
  ..$ output: chr [1:1778] "    [1] 110 110  93 110 175 105 245  62  95 123 123 180 180 180 205 215 230  66" "   [19]  52  65  97 150 150 245 175  66  91 113 264 175 335 109 110 110  93 110" "   [37] 175 105 245  62  95 123 123 180 180 180 205 215 230  66  52  65  97 150" "   [55] 150 245 175  66  91 113 264 175 335 109 110 110  93 110 175 105 245  62" ...
  ..$ type  : chr "numeric"
  ..$ msg   :List of 3
  .. ..$ messages: NULL
  .. ..$ warnings: NULL
  .. ..$ errors  : NULL
  ..$ stdout: NULL
  ..- attr(*, "class")= chr "evals"