Cómo combinar dos listas en R

111

Tengo dos listas:

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

Quiero una tercera lista:

list(2, 3, 4).

¿Cómo puedo hacerlo de forma sencilla? Aunque puedo hacerlo en bucle for, pero espero una respuesta de una sola línea, o tal vez un método incorporado.

En realidad, tengo una lista:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
después de computar en list(2, 3)y list(2, 4), quiero list(2, 3, 4).

Rohit Singh
fuente
7
c(l1, l2)? Si espera algo más, ¿podría detallar un poco y / o compartir sus listas y el resultado deseado?
Vincent Bonhomme
Tiene el mismo formato que he proporcionado anteriormente.
Rohit Singh
1
Tengo una lista: lista (lista (2, 3), lista (2, 4), lista (3, 5), lista (3, 7), lista (5, 6), lista (5, 7), lista (6, 7)). Después de calcular en la lista (2, 3) y la lista (2, 4), quiero la lista (2, 3, 4). Eso es.
Rohit Singh
1
@Vincent llegó primero. Es su respuesta.
Rich Scriven
2
De su edición: si tiene list(2, 3)y list(2, 4),y quiere list(2, 3, 4), también puede quererunique(c(l1, l2))
user20650

Respuestas:

143

c se puede usar en listas (y no solo en vectores):

# 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

Si tiene una lista de listas, puede hacerlo (quizás) más cómodamente con do.call, por ejemplo:

do.call(c, list(l1, l2))
Vincent Bonhomme
fuente
54

Nosotros podemos usar append

append(l1, l2)

También tiene argumentos para insertar elementos en una ubicación particular.

Akrun
fuente
@Zach pastey paste0van a unir cadenas para formar una cadena más grande. ¿Puede describir el problema un poco más porque no lo entendí claramente?
Akrun
2
@akrun ¿Cómo es la sintaxis para más de dos listas?
Frosi
3
@Frosi puede hacer c(l1, l2, l3), append()es solo un contenedor, c()pero solo toma dos argumentos.
sindri_baldur
0

Estaba buscando hacer lo mismo, pero para preservar la lista como solo una matriz de cadenas, así que escribí un nuevo código, que por lo que he estado leyendo puede que no sea el más eficiente, pero funcionó para lo que necesitaba hacer. :

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

Simplemente crea una nueva lista y agrega elementos de dos listas proporcionadas para crear una.

John Proestakes
fuente