web-dev-qa-db-fra.com

Comment ajouter une paire clé / valeur variable à l'objet de liste?

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?

51
Frank

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
67
Sharpie

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
15
Assad Ebrahim

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"
13
mpiktas

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"

0
AutomationNerd