Opciones para el almacenamiento en caché / memorización / hashing en R

Estoy tratando de encontrar una manera simple de usar algo como las funciones hash de Perl en R (esencialmente almacenamiento en caché), ya que tenía la intención de hacer el hash de estilo Perl y escribir mi propia memoria de cálculos. Sin embargo, otros me han golpeado y tienen paquetes para memorizar. Cuanto más excavo, más encuentro, por ejemplo,memoise yR.cache, pero las diferencias no son claras. Además, no está claro de qué otra manera se pueden obtener hash de estilo Perl (o diccionarios de estilo Python) y escribir la propia memoria, aparte de usar elhash package, que no parece apuntalar los dos paquetes de memorización.

ado que no puedo encontrar información sobre CRAN ni en ningún otro lugar para distinguir entre las opciones, tal vez esta debería ser una pregunta wiki comunitaria sobre SO: ¿Cuáles son las opciones para la memorización y el almacenamiento en caché en R y cuáles son sus diferencia

Como base de comparación, aquí hay una lista de las opciones que he encontrado. Además, me parece que todo depende del hash, por lo que también tendré en cuenta las opciones de hash. El almacenamiento de clave / valor está algo relacionado, pero abre una enorme lata de gusanos con respecto a los sistemas de base de datos (por ejemplo, BerkeleyDB, Redis, MemcacheDB ypuntos de otros).

Parece que las opciones son:

Hashingdigeri: proporciona hashing para objetos R arbitrarios. Memoization memoise - una herramienta muy simple para la memorización de funciones. R.cache - ofrece más funcionalidades para la memorización, aunque parece que algunas de las funciones carecen de ejemplos. Almacenamiento en cachépicadill: Proporciona una funcionalidad de almacenamiento en caché similar a los hash de Perl y los diccionarios de Python. Almacenamiento de clave / valor

stas son opciones básicas para el almacenamiento externo de objetos R.

stashr filehash Checkpointing cacher - esto parece ser más parecido a checkpointing. CodeDepends - Un proyecto OmegaHat que sustenta acacher y proporciona algunas funcionalidades útiles. DMTCP (no es un paquete R): parece admitir puntos de verificación en varios idiomas, ya desarrollador solicitó recientemente asistencia para probar puntos de control DMTCP en R.OtrBase R admite: vectores y listas con nombre, nombres de filas y columnas de marcos de datos y nombres de elementos en entornos. Me parece que usar una lista es un poco complicado. (También haypairlist, pero está en desuso.)Lostabla de dato package admite búsquedas rápidas de elementos en una tabla de datos.Utilizar caso

Aunque estoy principalmente interesado en conocer las opciones, tengo dos casos de uso básicos que surgen:

Caching: conteo simple de cadenas. [Nota: Esto no es para PNL, sino para uso general, por lo que las bibliotecas de PNL son excesivas; las tablas son inadecuadas porque prefiero no esperar hasta que todo el conjunto de cadenas se cargue en la memoria. Los hash de estilo Perl están en el nivel correcto de utilidad.] Memorización de cálculos monstruosos.

Estos realmente surgen porque soy hurgando en el perfil de algún código slooooow y realmente me gustaría contar cadenas simples y ver si puedo acelerar algunos cálculos mediante la memorización. Ser capaz de trocear los valores de entrada, incluso si no recuerdo, me permitiría ver si la memorización puede ayudar.

Nota 1: ElCRAN Vista de tareas sobre investigación reproducible enumera un par de paquetes cacher yR.cache), pero no se detallan las opciones de uso.

Nota 2: Para ayudar a otros que buscan código relacionado, aquí hay algunas notas sobre algunos de los autores o paquetes. Algunos de los autores usan SO. :)

Dirk Eddelbuettel:digest - muchos otros paquetes dependen de esto.Roger Peng:cacher, filehash, stashR - estos abordan diferentes problemas de diferentes maneras; ver El sitio de Roger para más paquetes. Christopher Brown:hash - Parece ser un paquete útil, pero los enlaces a ODG están caídos, lamentablemente.Henrik Bengtsson:R.cache Y Hadley Wickham:memoise - aún no está claro cuándo preferir un paquete sobre el otro.

Nota 3: S, algunas personas usan memorizar / memorizar otros usan memorizar / memorizar. Solo una nota si estás buscando. Henrik usa "z" y Hadley usa "s".

Respuestas a la pregunta(3)

Su respuesta a la pregunta