Come combinare due elenchi in R


111

Ho due elenchi:

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

Voglio una terza lista:

list(2, 3, 4).

Come posso farlo in modo semplice. Anche se posso farlo in ciclo for, ma mi aspetto una risposta di una riga, o forse un metodo integrato.

In realtà, ho una lista:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
dopo aver calcolato su list(2, 3)e list(2, 4), voglio list(2, 3, 4).


7
c(l1, l2)? se ti aspetti qualcos'altro, potresti per favore dettagliare un po 'e / o condividere le tue liste e l'output desiderato?
Vincent Bonhomme

È dello stesso formato che ho fornito sopra.
Rohit Singh

1
Ho una lista: lista (lista (2, 3), lista (2, 4), lista (3, 5), lista (3, 7), lista (5, 6), lista (5, 7), lista (6, 7)). Dopo aver calcolato sulla lista (2, 3) e sulla lista (2, 4), voglio la lista (2, 3, 4). Questo è tutto.
Rohit Singh

1
@Vincent è arrivato per primo. È la sua risposta.
Rich Scriven

2
Dalla tua modifica: se hai list(2, 3)e list(2, 4),e vuoi list(2, 3, 4), potresti anche volerunique(c(l1, l2))
user20650

Risposte:


143

c può essere utilizzato su liste (e non solo su vettori):

# 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

Se hai un elenco di elenchi, puoi farlo (forse) più comodamente con do.call, ad esempio:

do.call(c, list(l1, l2))

54

Possiamo usare append

append(l1, l2)

Ha anche argomenti per inserire l'elemento in una posizione particolare.


@ Zach pastee paste0devono unire le stringhe in una stringa più grande. Puoi descrivere un po 'di più il problema perché non l'ho capito chiaramente?
akrun

2
@akrun Com'è la sintassi per più di due elenchi?
Frosi

3
@Frosi che puoi fare c(l1, l2, l3), append()è solo un wrapper c()ma richiede solo due argomenti.
sindri_baldur

0

Stavo cercando di fare la stessa cosa, ma per preservare l'elenco come un semplice array di stringhe, quindi ho scritto un nuovo codice, che da quello che ho letto potrebbe non essere il più efficiente ma ha funzionato per quello che dovevo fare :

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

Crea semplicemente un nuovo elenco e aggiunge elementi da due elenchi forniti per crearne uno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.