Gibt es eine Möglichkeit, Mapply auf zwei Vektoren zu verwenden, um eine benannte Liste zu erstellen? Der erste Vektor würde vom Typ character
sein und die für die Liste verwendeten Namen enthalten, während der zweite die Werte enthält.Erstellen einer benannten Liste aus zwei Vektoren (Namen, Werte)
Bisher ist die einzige Lösung, die ich habe ist:
> dummyList = list()
> addToList <- function(name, value) {
+ dummyList[[name]] <- value
+ }
> mapply(addToList, c("foo", "bar"), as.list(c(1, 2))
$foo
`1`
$bar
`2`
Dies scheint eine ziemlich gekünstelt Lösung, aber ich kann nicht herausfinden, wie es sonst zu tun. Die Probleme, die ich mit ihm haben, sind:
sie die Schaffung von
dummyList
erfordert, obwohldummyList
nie geändert wird und eine leere Liste nach dem Aufruf vonmapply
.Wenn der numerische Vektor nicht in eine Liste konvertiert wird, ist das Ergebnis des Aufrufs an
mapply
ein benannter Vektor von Doubles.
Um das zu umgehen Problem 2, kann ich immer anrufen nur mapply
auf zwei Vektoren und dann as.list
auf dem Ergebnis nennen, aber es scheint, als ob es eine Möglichkeit sein sollte, um eine Liste mit den Werten in einem direkt zu erstellen sein Vektor.
Vielen Dank. Ich war mir der 'setNames'-Funktion nicht bewusst und das passt perfekt zu meinen Zielen. Aus Neugier, gibt es einen Weg, es zu tun, mit "Lapply", die Sie kennen? Es scheint möglich, dass 'lapply' Listen zurückgeben kann. –
was meinst du mit "benutzen' lapply' "? Möchten Sie die gleiche Aufgabe mit 'lapply' ausführen? (Wenn ja, warum? Als Programmierübung? Mehr Kontext wäre nützlich.) Wenn Sie etwas anderes machen wollen, bearbeiten Sie Ihre Frage oder fragen Sie eine neue? –