R'de iki liste nasıl birleştirilir


113

İki listem var:

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

Üçüncü bir liste istiyorum:

list(2, 3, 4).

Bunu nasıl basit bir şekilde yapabilirim? Her ne kadar döngüde yapabilsem de, ancak tek satırlık bir cevap veya belki de yerleşik bir yöntem bekliyorum.

Aslında bir listem var:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
Hesaplamadan sonra list(2, 3)ve list(2, 4)istiyorum list(2, 3, 4).


7
c(l1, l2)? Başka bir şey bekliyorsanız, lütfen biraz detaylandırır ve / veya listelerinizi ve istediğiniz çıktıyı paylaşır mısınız?
Vincent Bonhomme

Yukarıda sağladığımla aynı formatta.
Rohit Singh

1
Bir listem var: list (list (2, 3), list (2, 4), list (3, 5), list (3, 7), list (5, 6), list (5, 7), liste (6, 7)). List (2, 3) ve list (2, 4) üzerinde hesapladıktan sonra list (2, 3, 4) istiyorum. Bu kadar.
Rohit Singh

1
@ Vincent buraya ilk geldi. Bu onun cevabı.
Rich Scriven

2
Düzenlemenizle Gönderen: Eğer varsa list(2, 3)ve list(2, 4),ve istediğiniz list(2, 3, 4), ayrıca isteyebilirsinizunique(c(l1, l2))
user20650

Yanıtlar:


144

c listelerde kullanılabilir (ve sadece vektörlerde değil):

# 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

Bir liste listeniz varsa, bunu (belki) daha rahat bir şekilde yapabilirsiniz do.call, örneğin:

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

54

Kullanabiliriz append

append(l1, l2)

Ayrıca, belirli bir konuma öğe eklemek için argümanlar içerir.


@Zach pasteve paste0dizeleri daha büyük bir dizeye birleştirmek için. Açıkça anlamadığım için sorunu biraz daha açıklayabilir misiniz?
akrun

2
@akrun İkiden fazla liste için sözdizimi nasıl?
Frosi

4
Yapabileceğiniz @Frosi c(l1, l2, l3), append()sadece bir sarıcı c()ama sadece iki argüman alır.
sindri_baldur

0

Ben de aynı şeyi yapmak istiyordum, ancak listeyi sadece bir dizi dizge olarak korumak için yeni bir kod yazdım, okuduklarımdan en verimli olmayabilir ama yapmam gereken şey için işe yaradı :

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

Yalnızca yeni bir liste oluşturur ve bir tane oluşturmak için sağlanan iki listeden öğeler ekler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.