แปลงเวกเตอร์เป็นรายการโดยแต่ละองค์ประกอบในเวกเตอร์เป็นองค์ประกอบในรายการ


93

เวกเตอร์เป็นดังนี้:

c(1,2,3)
#[1] 1 2 3

ฉันต้องการสิ่งนี้:

list(1,2,3)
#[[1]]
#[1] 1
#
#[[2]]
#[1] 2
#
#[[3]]
#[1] 3

ฉันลองสิ่งนี้:

list(c(1,2,3))
#[[1]]
#[1] 1 2 3

คำตอบ:


127

ง่ายๆเพียงทำสิ่งนี้:

as.list(c(1,2,3))

FYI: ดูเหมือนว่าจะไม่สนใจค่า NULL ในas.list(c(0, NULL,1)).
Oleg Melnikov

1
@OlegMelnikov คุณไม่สามารถส่งผ่านNULLไปยังเวกเตอร์c()ได้คุณสามารถส่งผ่านได้NAหากนั่นคือสิ่งที่คุณกำลังมองหา
Matt W.

4

นอกเหนือจากคำตอบที่ยอมรับ: หากคุณต้องการเพิ่มเวกเตอร์ให้กับองค์ประกอบอื่น ๆ ในรายการที่ยาวขึ้น as.list () อาจไม่ได้ผลลัพธ์ตามที่คุณคาดหวัง ตัวอย่างเช่นคุณต้องการเพิ่มองค์ประกอบข้อความ 2 รายการและเวกเตอร์ขององค์ประกอบตัวเลขห้าองค์ประกอบ (1: 5) เพื่อสร้างรายการที่มีความยาว 7 องค์ประกอบ

L<-list("a","b",as.list(1:5)) 

อ๊ะ: ส่งคืนรายการที่มี 3 องค์ประกอบและองค์ประกอบที่สามมีรายการย่อย 5 องค์ประกอบ ไม่ใช่สิ่งที่เราต้องการ! วิธีแก้ปัญหาคือการเข้าร่วมสองรายการแยกกัน:

L1<-list("a","b")
L2<-as.list(1:5)
L<-c(L1,L2) #7 elements, as expected
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.