วิธีการรวมสองรายการใน R


113

ฉันมีสองรายการ:

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

ฉันต้องการรายชื่อที่สาม:

list(2, 3, 4).

ทำได้อย่างไรด้วยวิธีง่ายๆ แม้ว่าฉันจะทำแบบวนซ้ำได้ แต่ฉันคาดหวังว่าจะได้คำตอบแบบซับเดียวหรืออาจจะเป็นวิธีการในตัว

อันที่จริงผมมีรายการ:
list(list(2, 3), list(2, 4), list(3, 5), list(3, 7), list(5, 6), list(5, 7), list(6, 7)).
หลังจากการคำนวณบนlist(2, 3)และฉันต้องการlist(2, 4)list(2, 3, 4)


7
c(l1, l2)เหรอ? หากคุณคาดหวังอย่างอื่นโปรดให้รายละเอียดและ / หรือแบ่งปันรายการของคุณและผลลัพธ์ที่ต้องการ
Vincent Bonhomme

เป็นรูปแบบเดียวกับที่ฉันให้ไว้ข้างต้น
Rohit Singh

1
ฉันมีรายการ: รายการ (รายการ (2, 3), รายการ (2, 4), รายการ (3, 5), รายการ (3, 7), รายการ (5, 6), รายการ (5, 7), รายการ (6, 7)) หลังจากคำนวณตามรายการ (2, 3) และรายการ (2, 4) ฉันต้องการรายการ (2, 3, 4) แค่นั้นแหละ.
Rohit Singh

1
@ Vincent มาที่นี่ก่อน. มันเป็นคำตอบของเขา
Rich Scriven

2
จากการแก้ไขของคุณ: หากคุณมีlist(2, 3)และlist(2, 4),ต้องการlist(2, 3, 4)คุณอาจต้องการunique(c(l1, l2))
user20650

คำตอบ:


144

c สามารถใช้กับรายการ (และไม่เพียง แต่ในเวกเตอร์):

# 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

หากคุณมีลิสต์ลิสต์คุณสามารถทำได้ (อาจ) สะดวกสบายมากขึ้นด้วยdo.callเช่น:

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

54

เราสามารถใช้ append

append(l1, l2)

นอกจากนี้ยังมีอาร์กิวเมนต์เพื่อแทรกองค์ประกอบในตำแหน่งเฉพาะ


@Zach pasteและpaste0จะรวมสตริงเข้าด้วยกันเป็นสตริงที่ใหญ่กว่า คุณช่วยอธิบายปัญหาอีกเล็กน้อยได้ไหมเนื่องจากฉันไม่เข้าใจอย่างชัดเจน
akrun

2
@akrun ไวยากรณ์มากกว่าสองรายการเป็นอย่างไร
Frosi

4
@Frosi คุณสามารถทำc(l1, l2, l3), append()เป็นเพียงเสื้อคลุมสำหรับc()แต่ใช้เวลาเพียงสองข้อโต้แย้ง
sindri_baldur

0

ฉันต้องการทำสิ่งเดียวกัน แต่เพื่อรักษารายการไว้เป็นเพียงอาร์เรย์ของสตริงดังนั้นฉันจึงเขียนโค้ดใหม่ซึ่งจากสิ่งที่ฉันอ่านอาจไม่ได้มีประสิทธิภาพมากที่สุด แต่ใช้ได้กับสิ่งที่ฉันต้องทำ :

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

เพียงแค่สร้างรายการใหม่และเพิ่มรายการจากรายการที่ให้มาสองรายการเพื่อสร้างรายการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.