我试图找到一种简单的方法来在 R 中使用类似 Perl 的 hash 函数(本质上是缓存) ,因为我打算既进行 Perl 风格的哈希,又编写自己的计算制表。然而,其他人已经抢在我前面,拿到了记忆套餐。我挖掘得越多,就发现越多,例如 memoise
和 R.cache
,但差异并不明显。此外,除了使用 hash
包之外,我们还不清楚如何获得 Perl 风格的散列(或 Python 风格的字典)并编写自己的制表,因为 hash
包似乎并不支持这两个制表包。
因为我找不到任何关于 CRAN 或其他地方的信息来区分选项,也许这应该是一个关于 SO 的社区 wiki 问题: R 中的制表和缓存选项是什么,它们的区别是什么?
作为比较的基础,下面是我发现的选项列表。另外,在我看来,所有这些都依赖于散列,所以我也要注意散列选项。键/值存储在某种程度上是相关的,但是它打开了关于 DB 系统的大量蠕虫(例如 BerkeleyDB、 Redis、 MemcacheDB 和 还有很多其他人)。
看起来选项有:
这些是 R 对象外部存储的基本选项。
cacher
并提供一些有用的功能。pairlist
,但是 这是不被推崇的。)虽然我最感兴趣的是了解这些选项,但是我有两个基本的用例:
这些都是因为我是 深入研究一些缓慢代码的分析,我想只计算简单的字符串,看看我是否可以通过制表来加快一些计算。能够对输入值进行哈希处理,即使我不使用制表,也会让我看到制表是否有帮助。
注1: 再现性研究的任务视角列出了几个包(cacher
和 R.cache
) ,但是没有详细说明使用选项。
注2: 为了帮助其他人寻找相关的代码,这里有一些关于一些作者或包的注释。有些作者使用 SO。:)
digest
-很多其他软件包都依赖于此。cacher
,filehash
,stashR
-这些以不同的方式解决不同的问题; 请参阅 罗杰的网站了解更多的软件包。hash
-似乎是一个有用的软件包,但 ODG 的链接是下来,不幸的。R.cache
& Hadley Wickham: memoise
——现在还不清楚什么时候应该更喜欢一个包裹而不是另一个。注3: 有些人使用制表/制表,有些人使用制表/制表。如果你在附近找的话,给你个便条。亨里克用“ z”,哈德利用“ s”。