Je suis en train d'essayer de trouver un moyen simple d'utiliser quelque chose comme Perl fonctions de hachage dans R (essentiellement la mise en cache), que j'avais l'intention de faire les deux Perl-style de hachage et d'écrire ma propre memoisation de calculs. Cependant, d'autres ont me battre pour le punch et avons des forfaits pour memoisation. Plus je creuse, plus je trouve, par exemple,memoise
et R.cache
, mais les différences ne sont pas facilement clair. En outre, il n'est pas clair comment on peut obtenir Perl-style de hachages (ou Python-style dictionnaires) et écrire son propre memoization, autres que l'usage de l' hash
package, qui ne semble pas sous-tendent les deux memoization paquets.
Depuis que je peux trouver aucune information sur CRAN ou d'ailleurs de distinguer entre les options, peut-être cela devrait être une communauté wiki question DONC: Quelles sont les options pour memoization et la mise en cache dans R, et quelles sont leurs différences?
A titre de comparaison, voici une liste des options que j'ai trouvé. Aussi, il me semble que tout dépend de hachage, donc je vais noter le hachage et des options. Clé/valeur de stockage est liée en quelque sorte, mais ouvre une énorme boîte de pandore concernant systèmes DB (par exemple, BerkeleyDB, Redis, MemcacheDB et des dizaines d'autres).
On dirait les options sont les suivantes:
Le hachage
- digest - offre de hachage pour arbitraire de R objets.
Memoization
- memoise - un outil très simple pour memoization de fonctions.
- R. cache - offre plus de fonctionnalités pour memoization, mais il semble que certaines des fonctions de l'absence d'exemples.
La mise en cache
- hachage - Fournit des fonctionnalités de mise en cache semblable à Perl de hachages et les dictionnaires Python.
Clé/valeur de stockage
Ce sont des options de base pour le stockage externe de R objets.
Les points de contrôle
- cacher - ce qui semble être plus proche de la vérification.
-
CodeDepends - Un OmegaHat projet qui sous-tend
cacher
et fournit quelques fonctions utiles. - DMTCP (pas un package R) - apparaît à l'appui de la vérification dans un tas de langues, et un développeur a récemment demandé de l'aide de tests DMTCP checkpoint dans R.
D'autres
- De la Base de R prend en charge: nom des vecteurs et des listes, en ligne et en colonne les noms des trames de données, et les noms d'objets dans les environnements. Il me semble que l'utilisation d'une liste est un peu de bidouille. (Il y a aussi
pairlist
, mais il est obsolète.) - Les données.tableau package prend en charge rapide des recherches d'éléments dans un tableau de données.
Cas d'utilisation
Même si je suis surtout intéressé à en connaître les options, j'ai deux types d'utilisation de base qui se posent:
- La mise en cache: un Simple comptage des chaînes de caractères. [Note: Ce n'est pas pour la PNL, mais en général les utiliser, de sorte que la PNL bibliothèques sont exagéré; les tables sont insuffisants, car je préfère ne pas attendre jusqu'à ce que l'ensemble des chaînes sont chargés en mémoire. Perl-style hachages sont au bon niveau d'utilité.]
- Memoization de monstrueux calculs.
Ces vraiment surviennent parce que je suis à creuser pour le profilage de certains slooooow code et j'aimerais vraiment compter de simples chaînes et voir si je peux accélérer certains calculs via memoization. Être en mesure de hachage les valeurs d'entrée, même si je n'ai pas memoize, permettez-moi de voir si memoization peut vous aider.
Note 1: Le CRAN Tâche de Vue sur Reproductible de Recherche de listes d'un couple de paquets (cacher
et R.cache
), mais il n'y a pas d'élaboration sur les options d'utilisation.
Note 2: À l'aide d'autres personnes à la recherche de code, voici quelques notes sur certains des auteurs ou des paquets. Certains auteurs utilisent. :)
- Dirk Eddelbuettel:
digest
- beaucoup d'autres paquets dépendent de cela. - Roger Peng:
cacher
,filehash
,stashR
- elles s'adressent à différents problèmes de différentes façons, voir Roger du site pour plus de paquets. - Christopher Brown:
hash
- Semble être un bon paquet, mais les liens vers les ODG sont en baisse, malheureusement. - Henrik Bengtsson:
R.cache
& Hadley Wickham:memoise
-- il n'est pas encore clair quand à préférer l'une sur l'autre.
Note 3: Certaines personnes utilisent des memoise/memoisation d'autres utilisent memoize/memoization. Juste une remarque, si vous êtes à la recherche autour de. Henrik utilise des "z" et Hadley utilise des "s".