Cách kết hợp hai danh sách trong R


111

Tôi có hai danh sách:

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

Tôi muốn một danh sách thứ ba:

list(2, 3, 4).

Làm thế nào tôi có thể làm điều đó một cách đơn giản. Mặc dù tôi có thể làm điều đó trong vòng lặp for, nhưng tôi đang mong đợi một câu trả lời duy nhất hoặc có thể là một phương pháp tích hợp sẵn.

Trên thực tế, tôi có một danh sách:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
Sau khi tính toán list(2, 3)list(2, 4), tôi muốn list(2, 3, 4).


7
c(l1, l2)? nếu bạn mong đợi điều gì khác, bạn có thể vui lòng chi tiết một chút và / hoặc chia sẻ danh sách của bạn và kết quả mong muốn không?
Vincent Bonhomme

Nó có cùng định dạng như tôi đã cung cấp ở trên.
Rohit Singh

1
Tôi có một danh sách: danh sách (danh sách (2, 3), danh sách (2, 4), danh sách (3, 5), danh sách (3, 7), danh sách (5, 6), danh sách (5, 7), danh sách) (6, 7)). Sau khi tính toán trên danh sách (2, 3) và danh sách (2, 4), tôi muốn danh sách (2, 3, 4). Đó là nó.
Rohit Singh

1
@Vincent đến đây trước. Đó là câu trả lời của anh ấy.
Rich Scriven

2
Từ chỉnh sửa của bạn: nếu bạn có list(2, 3)list(2, 4),và muốn list(2, 3, 4), bạn có thể cũng muốnunique(c(l1, l2))
user20650

Câu trả lời:


143

c có thể được sử dụng trên danh sách (và không chỉ trên vectơ):

# 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

Nếu bạn có một danh sách các danh sách, bạn có thể làm điều đó (có lẽ) thoải mái hơn với do.call, ví dụ:

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

54

Chúng ta có thể sử dụng append

append(l1, l2)

Nó cũng có các đối số để chèn phần tử tại một vị trí cụ thể.


@Zach pastepaste0là để nối các chuỗi lại với nhau thành một chuỗi lớn hơn. Bạn có thể mô tả vấn đề kỹ hơn một chút vì tôi chưa hiểu rõ về nó không?
akrun

2
@akrun Cú pháp của nhiều hơn hai danh sách như thế nào?
Frosi

3
@Frosi bạn có thể làm c(l1, l2, l3), append()chỉ là một trình bao bọc c()nhưng chỉ nhận hai đối số.
sindri_baldur

0

Tôi đang tìm cách làm điều tương tự, nhưng để bảo toàn danh sách chỉ là một mảng chuỗi, vì vậy tôi đã viết một mã mới, mã mà từ những gì tôi đang đọc có thể không hiệu quả nhất nhưng hiệu quả cho những gì tôi cần làm :

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

Nó chỉ tạo một danh sách mới và thêm các mục từ hai danh sách được cung cấp để tạo một danh sách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.