Опции для кэширования / memoization / хеширующий в R

я пытаюсь найти простой способ использовать что-то как хеш-функции Perl в R (по существу кэширующийся), поскольку я намеревался сделать и хеширование стиля Perl и записать мой собственный memoisation вычислений. Однако другие победили меня к удару и имеют пакеты для memoisation. Чем больше я рою, тем больше я нахожу, например, memoise и R.cache, но различия не являются с готовностью четкими. Кроме того, не ясно, как еще можно получить хеши стиля Perl (или словари стилей Python) и записать собственный memoization, кроме использовать хеш пакет, который, кажется, не подкрепляет два memoization пакета.

, Так как я не могу найти информацию о CRAN или в другом месте различать опции, возможно, это должно быть общественным вопросом о Wiki на ТАК: Каковы опции для memoization и кэширующийся в R, и каковы их различия?


Как основание для сравнения, вот список опций, которые я нашел. Кроме того, мне кажется, что все зависят от хеширования, таким образом, я отмечу опции хеширования также. Место хранения ключа/значения несколько связано, но открывает огромную кучу проблем относительно систем DB (например, BerkeleyDB, Redis, MemcacheDB и множество других ).

похоже, что опции:

Хеширование

  • обзор - обеспечивает хеширование для произвольных объектов R.

Memoization

  • memoise - очень простой инструмент для memoization функций.
  • R.cache - предлагает больше функциональности для memoization, хотя кажется, что некоторые функции испытывают недостаток в примерах.

Кэширование

  • хеш - Обеспечивает кэширующуюся функциональность, сродни хешам Perl и словарям Python.

место хранения Ключа/значения

Это основные опции для внешнего места хранения объектов R.

, Отмечающий контрольной точкой

Другой

  • Основа R поддержки: названные векторы и списки, строка и имена столбцов кадров данных и названия предметов в средах. Мне кажется, что использование списка является чем-то вроде клуджа. (Существует также pairlist, но он удерживается от использования .)
  • пакет data.table поддерживает быстрые поиски элементов в таблице данных.

Вариант использования

, Хотя я главным образом интересуюсь знанием опций, у меня есть два основных варианта использования, которые возникают:

  1. Кэширование: Простой подсчет последовательностей. Примечание: Это не для обработки естественного языка, но общего использования, таким образом, библиотеки обработки естественного языка являются излишеством; таблицы являются несоответствующими, потому что я предпочитаю не ожидать до всего набора последовательностей загружаются в память. Хеши стиля Perl на правильном уровне утилиты.]
  2. Memoization чудовищных вычислений.

Они действительно возникают, потому что я закапывание к профилированию некоторого кода slooooow , и я действительно хотел бы просто считать простые строки и видеть, могу ли я ускорить некоторые вычисления через memoization. Способность хешировать входные значения, даже если бы я не делаю memoize, позволила бы мне видеть, может ли memoization помочь.


Примечание 1: Представление Задачи CRAN о Восстанавливаемом Исследовании списки несколько пакетов ( ловец и R.cache), но на опциях использования нет никакой разработки.

Примечание 2: помочь другим, ищущим связанный код, здесь несколько примечаний по некоторым авторам или пакетам. Некоторые авторы используют ТАК. :)

  • Dirk Eddelbuettel: обзор - много других пакетов зависит от этого.
  • Roger Peng: ловец , filehash, stashR - они решают различные проблемы по-разному; обратиться сайт Roger для большего количества пакетов.
  • Christopher Brown: хеш - Кажется, полезный пакет, но ссылки с ODG снижаются, к сожалению.
  • Henrik Bengtsson: R.cache и Hadley Wickham: memoise - еще не ясно, когда предпочесть один пакет по другому.

Примечание 3: Некоторые люди используют memoise/memoisation memoize/memoization использования других. Просто примечание, если вы ищете вокруг. Henrik использует "z", и Hadley использует "s".

69
задан www 26 December 2017 в 03:13
поделиться