Bagaimana menggabungkan dua daftar di R

112

Saya punya dua daftar:

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

Saya ingin daftar ketiga:

list(2, 3, 4).

Bagaimana saya bisa melakukannya dengan cara yang sederhana. Meskipun saya dapat melakukannya dalam perulangan, tetapi saya mengharapkan jawaban satu baris, atau mungkin metode bawaan.

Sebenarnya, saya punya daftar:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
Setelah menghitung list(2, 3)dan list(2, 4), saya mau list(2, 3, 4).

Rohit Singh
sumber
7
c(l1, l2)? jika Anda mengharapkan sesuatu yang lain, dapatkah Anda menjelaskan sedikit dan / atau membagikan daftar Anda dan keluaran yang diinginkan?
Vincent Bonhomme
Formatnya sama seperti yang saya berikan di atas.
Rohit Singh
1
Saya punya daftar: daftar (daftar (2, 3), daftar (2, 4), daftar (3, 5), daftar (3, 7), daftar (5, 6), daftar (5, 7), daftar (6, 7)). Setelah menghitung daftar (2, 3) dan daftar (2, 4), saya ingin daftar (2, 3, 4). Itu dia.
Rohit Singh
1
@ Vincent sampai di sini dulu. Itu jawabannya.
Rich Scriven
2
Dari hasil edit Anda: jika Anda memiliki list(2, 3)dan list(2, 4),dan ingin list(2, 3, 4), Anda mungkin juga menginginkanunique(c(l1, l2))
user20650

Jawaban:

143

c dapat digunakan pada daftar (dan tidak hanya pada vektor):

# 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

Jika Anda memiliki daftar daftar, Anda dapat melakukannya (mungkin) dengan lebih nyaman do.call, misalnya:

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

Kita bisa menggunakan append

append(l1, l2)

Ini juga memiliki argumen untuk memasukkan elemen di lokasi tertentu.

akrun
sumber
@Zach pastedan paste0menggabungkan string menjadi string yang lebih besar. Dapatkah Anda menjelaskan masalah sedikit lebih banyak karena saya tidak memahaminya dengan jelas?
akrun
2
@akrun Bagaimana sintaks untuk lebih dari dua daftar?
Frosi
4
@Frosi yang dapat Anda lakukan c(l1, l2, l3), append()hanyalah pembungkus c()tetapi hanya membutuhkan dua argumen.
sindri_baldur
0

Saya ingin melakukan hal yang sama, tetapi untuk mempertahankan daftar hanya sebagai rangkaian string jadi saya menulis kode baru, yang dari apa yang telah saya baca mungkin bukan yang paling efisien tetapi berfungsi untuk apa yang perlu saya lakukan :

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

Ini hanya membuat daftar baru dan menambahkan item dari dua daftar yang disediakan untuk membuatnya.

John Proestakes
sumber