Jak połączyć dwie listy w R


113

Mam dwie listy:

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

Chcę trzecią listę:

list(2, 3, 4).

Jak mogę to zrobić w prosty sposób. Chociaż mogę to zrobić w pętli for, ale oczekuję odpowiedzi z jedną linijką lub może wbudowanej metody.

Właściwie to mam listę:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
Po obliczeniu na list(2, 3)i list(2, 4)chcę list(2, 3, 4).


7
c(l1, l2)? Jeśli spodziewasz się czegoś innego, czy mógłbyś trochę szczegółowo opisać i / lub udostępnić swoje listy i pożądane wyniki?
Vincent Bonhomme

Ma taki sam format, jak podałem powyżej.
Rohit Singh

1
Mam listę: lista (lista (2, 3), lista (2, 4), lista (3, 5), lista (3, 7), lista (5, 6), lista (5, 7), lista (6, 7)). Po obliczeniu listy (2, 3) i listy (2, 4) chcę listę (2, 3, 4). Otóż ​​to.
Rohit Singh

1
@ Vincent dotarł tutaj pierwszy. To jego odpowiedź.
Rich Scriven

2
Z edit: jeśli masz list(2, 3)a list(2, 4),i chce list(2, 3, 4), może również chciećunique(c(l1, l2))
user20650

Odpowiedzi:


144

c można używać na listach (i nie tylko na wektorach):

# 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

Jeśli masz listę list, możesz to zrobić (być może) wygodniej do.callnp .:

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

54

Możemy użyć append

append(l1, l2)

Ma również argumenty, aby wstawić element w określonym miejscu.


@Zach pastei paste0mają łączyć ze sobą struny w większy ciąg. Czy możesz dokładniej opisać problem, ponieważ nie rozumiałem go dokładnie?
akrun

2
@akrun Jaka jest składnia dla więcej niż dwóch list?
Frosi

4
@ Frosi, który możesz zrobić c(l1, l2, l3), append()jest tylko opakowaniem, c()ale przyjmuje tylko dwa argumenty.
sindri_baldur

0

Chciałem zrobić to samo, ale zachować listę jako zwykłą tablicę ciągów, więc napisałem nowy kod, który z tego, co czytałem, może nie być najbardziej wydajny, ale działał zgodnie z tym, co musiałem zrobić :

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

Po prostu tworzy nową listę i dodaje elementy z dwóch dostarczonych list, aby utworzyć jedną.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.