Comment combiner deux listes dans R

112

J'ai deux listes:

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

Je veux une troisième liste:

list(2, 3, 4).

Comment puis-je le faire de manière simple. Bien que je puisse le faire en boucle for, mais je m'attends à une réponse unique, ou peut-être une méthode intégrée.

En fait, j'ai une liste:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
après avoir calculé list(2, 3)et list(2, 4), je veux list(2, 3, 4).

Rohit Singh
la source
7
c(l1, l2)? si vous vous attendez à autre chose, pourriez-vous détailler un peu et / ou partager vos listes et le résultat souhaité?
Vincent Bonhomme
Il est du même format que celui que j'ai fourni ci-dessus.
Rohit Singh
1
J'ai une liste: liste (liste (2, 3), liste (2, 4), liste (3, 5), liste (3, 7), liste (5, 6), liste (5, 7), liste (6, 7)). Après avoir calculé sur la liste (2, 3) et la liste (2, 4), je veux la liste (2, 3, 4). C'est tout.
Rohit Singh
1
@Vincent est arrivé le premier. C'est sa réponse.
Rich Scriven
2
De votre édition: si vous avez list(2, 3)et list(2, 4),et voulez list(2, 3, 4), vous pouvez également vouloirunique(c(l1, l2))
user20650

Réponses:

143

c peut être utilisé sur des listes (et pas seulement sur des vecteurs):

# 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 vous avez une liste de listes, vous pouvez le faire (peut-être) plus confortablement avec do.call, par exemple:

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

On peut utiliser append

append(l1, l2)

Il a également des arguments pour insérer un élément à un emplacement particulier.

Akrun
la source
@Zach pasteet paste0doivent joindre des chaînes ensemble à une chaîne plus grande. Pouvez-vous décrire un peu plus le problème car je ne l'ai pas bien compris?
akrun
2
@akrun Comment est la syntaxe de plus de deux listes?
Frosi
4
@Frosi que vous pouvez faire c(l1, l2, l3), append()n'est qu'un wrapper pour c()mais ne prend que deux arguments.
sindri_baldur
0

Je cherchais à faire la même chose, mais pour conserver la liste comme un simple tableau de chaînes, j'ai donc écrit un nouveau code, qui d'après ce que j'ai lu n'est peut-être pas le plus efficace, mais a fonctionné pour ce que j'avais à faire :

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

Il crée simplement une nouvelle liste et ajoute des éléments à partir de deux listes fournies pour en créer une.

John Proestakes
la source