只是想知道是否存在像 R.cache 这样的软件包,但不是硬盘驱动器而是使用RAM而不是吗?
或许在R中可能存在一些黑客攻击,以使 R.cache 包认为它使用硬盘驱动器,但是将它的缓存存储到RAM中的某种虚拟驱动器?
我还发现了这个很棒的question并尝试了 memoise 包,但事实证明它对于我的问题比R.cache慢,尽管它适用于RAM。
答案 0 :(得分:5)
也许您可以使用R.cache
制作RAM disk并将该驱动器指定为缓存的存储目标。
答案 1 :(得分:1)
您可以尝试pander的evals
功能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"