Como combinar duas listas em R

111

Eu tenho duas listas:

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

Eu quero uma terceira lista:

list(2, 3, 4).

Como posso fazer isso de maneira simples. Embora eu possa fazer isso em loop for, estou esperando uma resposta de linha, ou talvez um método embutido.

Na verdade, tenho uma lista:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
Depois de computar em list(2, 3)e list(2, 4), eu quero list(2, 3, 4).

Rohit Singh
fonte
7
c(l1, l2)? se você espera algo diferente, poderia detalhar um pouco e / ou compartilhar suas listas e a saída desejada?
Vincent Bonhomme de
É do mesmo formato que forneci acima.
Rohit Singh de
1
Eu tenho uma lista: lista (lista (2, 3), lista (2, 4), lista (3, 5), lista (3, 7), lista (5, 6), lista (5, 7), lista (6, 7)). Depois de calcular na lista (2, 3) e na lista (2, 4), quero a lista (2, 3, 4). É isso aí.
Rohit Singh de
1
@Vincent chegou primeiro. É a sua resposta.
Rich Scriven de
2
Da sua edição: se você tem list(2, 3)e list(2, 4),quer list(2, 3, 4), você também pode quererunique(c(l1, l2))
user20650

Respostas:

143

c pode ser usado em listas (e não apenas em vetores):

# 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 você tem uma lista de listas, pode fazê-lo (talvez) de forma mais confortável com do.call, por exemplo:

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

Podemos usar append

append(l1, l2)

Ele também tem argumentos para inserir o elemento em um local específico.

Akrun
fonte
@Zach pastee paste0são para juntar strings em uma string maior. Você pode descrever o problema um pouco mais, já que não o entendi claramente?
akrun de
2
@akrun Como é a sintaxe para mais de duas listas?
Frosi
3
@Frosi você pode fazer c(l1, l2, l3), append()é apenas um invólucro, c()mas leva apenas dois argumentos.
sindri_baldur
0

Eu estava tentando fazer a mesma coisa, mas para preservar a lista apenas como um array de strings, então escrevi um novo código, que pelo que tenho lido pode não ser o mais eficiente, mas funcionou para o que eu precisava fazer :

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

Ele apenas cria uma nova lista e adiciona itens de duas listas fornecidas para criar uma.

John Proestakes
fonte