So kombinieren Sie zwei Listen in R.

111

Ich habe zwei Listen:

l1 = list(2, 3)
l2 = list(4)

Ich möchte eine dritte Liste:

list(2, 3, 4).

Wie kann ich das auf einfache Weise tun? Ich kann es zwar in for-Schleife tun, aber ich erwarte eine einzeilige Antwort oder vielleicht eine eingebaute Methode.

Eigentlich habe ich eine Liste:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
Nach dem Rechnen auf list(2, 3)und list(2, 4)möchte ich list(2, 3, 4).

Rohit Singh
quelle
6
c(l1, l2)? Wenn Sie etwas anderes erwarten, können Sie bitte ein wenig Details angeben und / oder Ihre Listen und die gewünschte Ausgabe teilen?
Vincent Bonhomme
Es hat das gleiche Format wie oben angegeben.
Rohit Singh
1
Ich habe eine Liste: Liste (Liste (2, 3), Liste (2, 4), Liste (3, 5), Liste (3, 7), Liste (5, 6), Liste (5, 7), Liste (6, 7)). Nachdem ich Liste (2, 3) und Liste (2, 4) berechnet habe, möchte ich Liste (2, 3, 4). Das ist es.
Rohit Singh
1
@ Vincent kam zuerst hierher. Es ist seine Antwort.
Rich Scriven
2
Von Ihrer Bearbeitung: Wenn Sie haben list(2, 3)und list(2, 4),und wollen list(2, 3, 4), können Sie auch wollenunique(c(l1, l2))
user20650

Antworten:

143

c kann für Listen (und nicht nur für Vektoren) verwendet werden:

# you have
l1 = list(2, 3)
l2 = list(4)

# you want
list(2, 3, 4)
[[1]]
[1] 2

[[2]]
[1] 3

[[3]]
[1] 4

# you can do
c(l1, l2)
[[1]]
[1] 2

[[2]]
[1] 3

[[3]]
[1] 4

Wenn Sie eine Liste von Listen haben, können Sie dies (vielleicht) bequemer tun mit do.callz.

do.call(c, list(l1, l2))
Vincent Bonhomme
quelle
53

Wir können benutzen append

append(l1, l2)

Es enthält auch Argumente zum Einfügen eines Elements an einer bestimmten Stelle.

akrun
quelle
@Zach pasteund paste0sollen Strings zu einem größeren String zusammenfügen. Können Sie das Problem etwas genauer beschreiben, da ich es nicht klar verstanden habe?
Akrun
2
@akrun Wie ist die Syntax für mehr als zwei Listen?
Frosi
3
@Frosi, das Sie tun können c(l1, l2, l3), append()ist nur ein Wrapper für c(), nimmt aber nur zwei Argumente.
Sindri_baldur
0

Ich wollte das Gleiche tun, aber die Liste nur als eine Reihe von Zeichenfolgen beibehalten, also schrieb ich einen neuen Code, der nach dem, was ich gelesen habe, möglicherweise nicht der effizienteste ist, aber für das funktioniert, was ich tun musste ::

combineListsAsOne <-function(list1, list2){
  n <- c()
  for(x in list1){
    n<-c(n, x)
  }
  for(y in list2){
    n<-c(n, y)
  }
  return(n)
}

Es wird lediglich eine neue Liste erstellt und Elemente aus zwei bereitgestellten Listen hinzugefügt, um eine zu erstellen.

John Proestakes
quelle