只是想知道是否存在类似R.cache包但不是使用硬盘驱动器而是使用 RAM 的东西?
或者 R 中可能存在一些 hack,让R.cache包相信它使用硬盘驱动器,但是将它的缓存存储到 RAM 中的某种虚拟驱动器?
我也发现了这个很好的问题并尝试了 memoise包,但结果证明它比 R.cache 慢,尽管它适用于 RAM。
也许您可以制作一个RAM 磁盘并将该驱动器指定为缓存的存储目标,使用R.cache
.
您可以尝试一下具有自定义缓存引擎的pander函数。evals
有关详细信息,请参阅上面的链接,但简而言之:
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"