58 Stimmen

Wie fügt man einer Listenobjekt eine variable Schlüssel/Wert-Paar hinzu?

Ich habe zwei Variablen, key und value, und möchte sie als Schlüssel/Wert-Paar zu einer Liste hinzufügen:

key = "width"
value = 32

mylist = list()
mylist$key = value

Das Ergebnis ist folgendes:

mylist
# $key
# [1] 32

Aber ich hätte lieber dies:

mylist
# $width
# [1] 32

Wie kann ich das machen?

82voto

Sharpie Punkte 16663

R-Listen können als Hashes betrachtet werden - Vektoren von Objekten, auf die über ihren Namen zugegriffen werden kann. Mit diesem Ansatz können Sie ein neues Element zur Liste hinzufügen, wie folgt:

key <- "width"
value <- 32

mylist <- list()
mylist[[ key ]] <- value

Hier verwenden wir den im Variablen key gespeicherten String, um eine Position in der Liste aufzurufen, ähnlich wie bei der Verwendung des im Schleifenvariablen i gespeicherten Werts, um über:

vector[ i ]

Das Ergebnis ist:

myList
$width
[1] 32

23voto

Assad Ebrahim Punkte 5998

Die setNames() eingebaute Funktion erleichtert das Erstellen eines Hashes aus den angegebenen Schlüssel- und Wertelisten. (Danke an Nick K für den besseren Vorschlag.)

Verwendung: hh <- setNames(as.list(values), keys)

Beispiel:

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)
liga <- setNames(as.list(rankings), players)

Das Zugreifen auf die Werte durch die Schlüssel ist dann einfach:

liga$bob
 [1] 0.2027
liga$hubert
 [1] 0.0555

16voto

mpiktas Punkte 10583

Listenlemente in R können benannt werden. So machen Sie einfach:

 > mylist = list()
 > mylist$width = value

Wenn R auf diesen Code stößt

> l$somename=something

wo l eine Liste ist. Hängt es einer Liste ein Element something an und benennt es mit dem Namen somename. Es kann dann mit

> l[["somename"]]

oder

> l$somename

Der Name kann mit dem Befehl names geändert werden:

> names(l)[names(l)=="somename"] <- "othername"

Oder wenn Sie die Position des Elements in der Liste kennen, mit:

> names(l)[1] <- "someothername"

0voto

AutomationNerd Punkte 352

Wir können die Listen-Datenstruktur von R verwenden, um Daten in Form von Schlüssel-Wert-Paaren zu speichern.

Syntax:

ObjectName<-list("key"= Wert)

Beispiel:

mylist<-list("width"=32)

außerdem, siehe Beispiel: "https://github.com/WinVector/zmPDSwR/blob/master/Statlog/GCDSteps.R"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X