Je veux faire l'équivalent d'un dict python dans R. En gros, dans python j'ai:
visited = {}
if atom_count not in visited:
Do stuff
visited[atom_count] = 1
L'idée est, si j'ai vu cet atom_count spécifique, j'ai visité [atom_count] = 1. Ainsi, si je revois ce atom_count, je ne fais pas "Do Stuff". Atom_Count est un entier.
Merci!
La chose la plus proche d'un dict python dans R est simplement une liste. Comme la plupart des types de données R, les listes peuvent avoir un attribut names qui peut permettre aux listes d'agir comme un ensemble de paires nom-valeur:
> l <- list(a = 1,b = "foo",c = 1:5)
> l
$a
[1] 1
$b
[1] "foo"
$c
[1] 1 2 3 4 5
> l[['c']]
[1] 1 2 3 4 5
> l[['b']]
[1] "foo"
Maintenant pour l'avertissement habituel: ils ne sont pas exactement les mêmes; il y aura des différences. Vous inviterez donc la déception à essayer d'utiliser littéralement les listes exactement comme vous pourriez utiliser un dict en python.
Je pense que l'utilisation d'une table de hachage (création d'un nouvel environnement) peut être la solution à votre problème. Je taperais comment faire mais je l'ai fait hier jour sur talkstats.com.
Si votre dictionnaire est volumineux et ne comporte que deux colonnes, c'est peut-être la voie à suivre. Voici le lien vers le fil de discussion avec l'exemple de code R:
Si, comme dans votre cas, vous souhaitez simplement que votre "dictionnaire" stocke des valeurs du même type, vous pouvez simplement utiliser un vecteur et nommer chaque élément.
> l <- c(a = 1, b = 7, f = 2)
> l
a b f
1 7 2
Si vous souhaitez accéder aux "clés", utilisez names
.
> names(l)
[1] "a" "b" "f"