elementweise Kombination von zwei Listen im R
Sagen, ich habe zwei Listen:
list.a <- as.list(c("a", "b", "c"))
list.b <- as.list(c("d", "e", "f"))
Möchte ich kombinieren diese Listen rekursiv, so dass das Ergebnis wäre eine Liste der kombinierten Elemente als Vektor wie folgt:
[[1]]
[1] a d
[[2]]
[1] a e
[[3]]
[1] a f
[[4]]
[1] b d
und so weiter. Ich fühle mich wie ich bin etwas fehlt, relativ einfach hier. Keine Hilfe?
Cheers.
expand.grid(list.a, list.b)
wird Sie geben, was Sie wollen in einemdata.frame
Struktur, die ist wohl mehr nützlich.- Ich brauche die resultierende Liste für do.Aufruf zum erzeugen einer Serie von Zeichnungen mit dem x werden die Elemente der Liste.a, und y die Elemente der Liste.b (d.h., a[1], b[1]; a[1], b[2]; ...; a[n], b[k]).
- Siehe unten meine Antwort
- siehe auch related: stackoverflow.com/questions/6515134/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
expand.grid(list.1, list.b)
gibt Ihnen das gewünschte Ergebnis in einerdata.frame
Struktur. Dieser neigt dazu, die meisten nützliches format für die Arbeit mit Daten in R. Allerdings konnte man die genaue Struktur, Fragen Sie nach, (speichern der Bestellung) mit einem Aufrufapply
undlapply
:Wenn Sie wollen diese Liste, bestellt durch das erste element:
expand.grid()
funktioniert auf Listen als auch als "einfacher" Vektoren.list.a
wurden stattlist.a <- list(c("a","b","c"),c("x","y","z"))
, bekommt man nicht das gewünschte Ergebnis...Du willst
mapply
(wenn du mit "rekursiv" bedeutet "parallel"):Oder vielleicht ist das mehr das, was Sie wollen:
Diese bekommt Sie, was Sie suchen:
Hier ist eine Funktion, die Sie übergeben können, die Listen zu erweitern
Überrascht, niemand hat erwähnt, dass dieses einfache one-liner:
x <- c(1, 2, 3)
undy <- c(4, 5, 6)
, und es ändert sich alles in strings um.Hier ist etwas brute-force-Ansatz, da Sie die gleichen Abmessungen haben, "Liste anfügen".b-Liste.eine rekursiv mithilfe der append-Funktion.