R中的缓存/备注/哈希选项
我试图找到一种简单的方法来在R中使用Perl的哈希函数(本质上是缓存),因为我打算同时进行Perl样式的哈希并编写自己的计算备忘录。但是,其他人却打败了我,并准备了备忘录。挖掘的越多,我发现的就越多,例如memoise和R.cache,但差异尚不明确。此外,除了使用该hash包之外,还不清楚如何获得Perl风格的哈希(或Python风格的字典)并编写自己的备忘录,这似乎并不能支撑这两个备忘录包。 由于我找不到有关CRAN或其他地方的信息来区分这些选项,因此这也许应该是关于SO的社区Wiki问题:R中用于记忆和缓存的选项是什么,它们之间有什么区别? 作为比较的基础,这是我找到的选项的列表。另外,在我看来,所有这些都依赖于哈希,因此我还要注意哈希选项。密钥/值存储在某种程度上是相关的,但是它打开了大量有关DB系统的蠕虫(例如BerkeleyDB,Redis,MemcacheDB以及许多其他蠕虫)。 看起来这些选项是: 散列 摘要-为任意R对象提供哈希。 记忆化 memoise-一个非常简单的功能记忆工具。 R.cache-提供更多用于记忆的功能,尽管似乎其中一些功能缺少示例。 快取 hash-提供类似于Perl的hash和Python字典的缓存功能。 键/值存储 这些是R对象的外部存储的基本选项。 藏匿者 文件哈希 检查点 缓存器-这似乎更类似于检查点。 CodeDepends-一个OmegaHat项目,可作为基础cacher并提供一些有用的功能。 DMTCP(不是R包)-似乎支持多种语言的检查点,并且开发人员最近寻求协助来测试R中的DMTCP检查点。 其他 Base R支持:命名向量和列表,数据框的行和列名称以及环境中的项目名称。在我看来,使用列表有点麻烦。(也有pairlist,但已弃用。) 所述data.table包支持在一个数据表元素的快速查找。 用例 尽管我对了解这些选项最感兴趣,但是我有两个基本用例: 缓存:简单的字符串计数。[注意:这不是用于NLP,而是用于一般用途,因此NLP库是过大的;表是不够的,因为我不想等到整个字符串集都加载到内存中后再进行操作。Perl样式的哈希值在实用程序中是正确的。] 记忆巨大的计算。 之所以会出现这些问题,是因为我正在研究一些简单的代码概要分析,并且我真的很想只计算简单的字符串,看看是否可以通过记忆来加快一些计算。即使我不做备忘录,也能够对输入值进行哈希处理,这会让我看看备忘录是否有帮助。 注意1:“可再生性研究的CRAN任务视图”列出了几个软件包(cacher和R.cache),但未详细说明用法选项。 注意2:为了帮助其他人查找相关代码,这里有一些作者或软件包的注意事项。有些作者使用SO。:) Dirk Eddelbuettel:digest-许多其他软件包都依赖于此。 罗杰·彭:cacher,filehash,stashR-以不同的方式,这些地址不同的问题; 有关更多软件包,请参见Roger的网站。 Christopher Brown:hash-似乎是一个有用的软件包,但不幸的是,与ODG的链接断开了。 亨里克·本格森(Henrik Bengtsson):R.cache&哈德利·威克姆(Hadley Wickham):memoise-目前尚不清楚何时偏爱另一种包装。 注意3:有些人使用备忘录/记忆,其他人使用备忘录/记忆。如果您在四处搜寻,请注意。Henrik使用“ z”,Hadley使用“ s”。