J'ai deux variables, key
et value
, et je veux les ajouter en tant que paire clé/valeur à une liste:
key = "width"
value = 32
mylist = list()
mylist$key = value
Le résultat est le suivant:
mylist
# $key
# [1] 32
Mais je voudrais plutôt ceci:
mylist
# $width
# [1] 32
Comment puis-je faire ceci?
Les listes R peuvent être considérées comme des vecteurs de hachage d'objets accessibles par leur nom. En utilisant cette approche, vous pouvez ajouter une nouvelle entrée à la liste comme suit:
key <- "width"
value <- 32
mylist <- list()
mylist[[ key ]] <- value
Ici, nous utilisons la chaîne stockée dans la clé de variable pour accéder à une position dans la liste un peu comme utiliser la valeur stockée dans une variable de boucle i pour accéder à un vecteur via:
vector[ i ]
Le résultat est:
myList
$width
[1] 32
La fonction intégrée setNames()
facilite la création d'un hachage à partir de listes de clés et de valeurs données. (Merci à Nick K pour la meilleure suggestion.)
Utilisation: hh <- setNames(as.list(values), keys)
Exemple:
players <- c("bob", "tom", "tim", "tony", "tiny", "hubert", "herbert")
rankings <- c(0.2027, 0.2187, 0.0378, 0.3334, 0.0161, 0.0555, 0.1357)
league <- setNames(as.list(rankings), players)
Il est ensuite facile d'accéder aux valeurs via les touches:
league$bob [1] 0.2027 league$hubert [1] 0.0555
Les éléments de liste dans R peuvent être nommés. Donc, dans votre cas, faites
> mylist = list()
> mylist$width = value
Lorsque R rencontre ce code
> l$somename=something
où l est une liste. Il ajoute à une liste un élément quelque chose et le nomme avec un nom. Il est alors accessible en utilisant
> l[["somename"]]
ou
> l$somename
Le nom peut être modifié avec des noms de commande:
> names(l)[names(l)=="somename"] <- "othername"
Ou si vous positionnez maintenant l'élément dans la liste par:
> names(l)[1] <- "someothername"
Nous pouvons utiliser la structure de données de liste de R pour stocker des données sous forme de paire clé-valeur.
Syntaxe:
ObjectName<-list("key"= value)
Exemple:
mylist<-list("width"=32)
reportez-vous également à l'exemple: "https://github.com/WinVector/zmPDSwR/blob/master/Statlog/GCDSteps.R"