Я пытаюсь найти простой способ использовать что-то вроде хеш-функций Perl в R (по сути, кеширование), поскольку я намеревался сделать как хэширование в стиле Perl, так и написать собственное собственное описание вычислений. Тем не менее, другие избили меня до удара и имеют пакеты для воспоминаний. Чем больше я копаю, тем больше я нахожу, например, memoise и R.cache, но различия неясны. Кроме того, неясно, как еще можно получить хэши Perl-стиля (или словари в стиле Python) и написать одну собственную memoization, кроме как использовать пакет hash, который, похоже, не лежит в основе двух пакетов memoization.
Поскольку я не могу найти никакой информации о CRAN или где-либо еще, чтобы различать параметры, возможно, это должен быть вопрос сообщества wiki о SO: каковы варианты memoization и кеширования в R, и каковы их отличия?
В качестве основы для сравнения, вот список вариантов, которые я нашел. Кроме того, мне кажется, что все зависит от хэширования, поэтому я также заметлю варианты хэширования. Хранение ключей/значений несколько связано, но открывает огромную банку червей относительно систем БД (например, BerkeleyDB, Redis, MemcacheDB и множество других).
Похоже, что параметры:
хэширования
- digest - предоставляет хеширование для произвольных объектов R.
 
запоминание
- memoise - очень простой инструмент для memoization функций.
 - R.cache - предлагает больше возможностей для memoization, хотя, похоже, некоторые из функций не имеют примеров.
 
Кэширование
- hash - Обеспечивает функции кеширования, сродни хешам Perl и словарям Python.
 
Хранение ключей/значений
Это основные опции для внешнего хранения объектов R.
Checkpointing
- cacher - похоже, это более похоже на checkpointing.
 -  CodeDepends - проект OmegaHat, который поддерживает 
cacherи предоставляет некоторые полезные функции. - DMTCP (а не пакет R) - похоже, поддерживает контрольную точку в кучке языков и разработчик недавно искал помощь в тестировании контрольной точки DMTCP в R.
 
Другие
-  База R поддерживает: названные векторы и списки, имена строк и столбцов фреймов данных и имена элементов в средах. Мне кажется, что использование списка - это немного клочья. (Там также 
pairlist, но он устарел.) - Пакет data.table поддерживает быстрый поиск элементов в таблице данных.
 
Использовать регистр
Хотя мне больше всего интересно узнать параметры, у меня возникают два основных варианта использования:
- Кэширование: простой подсчет строк. [Примечание. Это не для НЛП, а для общего использования, поэтому библиотеки НЛП переполнены; таблицы неадекватны, потому что я предпочитаю не ждать, пока весь набор строк будет загружен в память. Хеши в стиле Perl находятся на правильном уровне полезности.]
 - Запоминание чудовищных расчетов.
 
Это действительно происходит потому, что я вникаю в профилирование некоторого кода slooooow, и мне бы очень хотелось просто подсчитать простые строки и посмотреть, могу ли я ускорить некоторые вычисления посредством memoization. Имея возможность хешировать входные значения, даже если я не memoize, позволит мне увидеть, может ли memoization помочь.
Примечание 1: CRAN Task View on Reproducible Research содержит несколько пакетов (cacher и R.cache), но не существует необходимости в разработке вариантов использования.
Примечание 2: Чтобы помочь другим, ищущим связанный код, несколько примечаний к некоторым из авторов или пакетов. Некоторые авторы используют SO.:)
-  Dirk Eddelbuettel: 
digest- от этого зависит множество других пакетов. -  Роджер Пэн: 
cacher,filehash,stashR- это разные проблемы по-разному; см. сайт Roger для получения дополнительных пакетов. -  Кристофер Браун: 
hash- Кажется, это полезный пакет, но ссылки на ODG, к сожалению, недоступны. -  Хенрик Бенгтссон: 
R.cacheи Хэдли Уикхем:memoise- пока не ясно, когда нужно отдать предпочтение одному пакету другому. 
Примечание 3: Некоторые люди используют memoise/memoisation, другие используют memoize/memoization. Просто заметьте, если вы ищете. Хенрик использует "z", а Хэдли использует "s".