วิธีแปลงรายการเป็นเวกเตอร์ใน r (พร้อมตัวอย่าง)


คุณสามารถใช้วิธีใดๆ ต่อไปนี้เพื่อแปลงรายการเป็นเวกเตอร์ใน R:

 #use unlist() function
new_vector <- unlist(my_list, use. names = FALSE )

#use flatten_*() function from purrr library
new_vector <- purrr::flatten(my_list)

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติตามรายการต่อไปนี้:

 #create list
my_list <- list(A = c(1, 2, 3),
                B = c(4, 5),
                C = 6)

#display list
my_list

$A
[1] 1 2 3

$B
[1] 4 5

$C
[1] 6

ตัวอย่างที่ 1: แปลงรายการเป็นเวกเตอร์โดยใช้ฟังก์ชัน unlist()

รหัสต่อไปนี้แสดงวิธีการแปลงรายการเป็นเวกเตอร์โดยใช้ฟังก์ชัน unlist()

 #convert list to vector
new_vector <- unlist(my_list)

#display vector
new_vector

A1 A2 A3 B1 B2 C 
 1 2 3 4 5 6 

โปรดทราบว่าคุณสามารถระบุ use.names = FALSE เพื่อลบชื่อออกจากเวกเตอร์:

 #convert list to vector
new_vector <- unlist(my_list, use. names = FALSE )

#display vector
new_vector

[1] 1 2 3 4 5 6

ตัวอย่างที่ 2: แปลงรายการเป็นเวกเตอร์โดยใช้ฟังก์ชัน flatten_*

รหัสต่อไปนี้แสดงวิธีการแปลงรายการเป็นเวกเตอร์โดยใช้ฟังก์ชันตระกูล flatten_* จากแพ็คเกจ purrr :

 library (purrr)

#convert list to vector
new_vector <- flatten_dbl(my_list)

#display vector
new_vector

[1] 1 2 3 4 5 6

ฟังก์ชัน flatten_dbl() จะแปลงรายการให้เป็นเวกเตอร์ประเภท double โดยเฉพาะ

โปรดทราบว่าเราสามารถใช้ flatten_chr() เพื่อแปลงรายการอักขระให้เป็นเวกเตอร์อักขระ:

 library (purrr) 

#define character list
my_char_list <- list(A = c('a', 'b', 'c'),
                     B = c('d', 'e'),
                     C = 'f')

#convert character list to character vector
new_char_vector <- flatten_chr(my_char_list)

#display vector
new_char_vector

[1] "a" "b" "c" "d" "e" "f"

ดูรายการฟังก์ชันตระกูล flatten_* ทั้งหมดได้ ในหน้านี้

หมายเหตุ: หากคุณกำลังทำงานกับรายการที่ยาวมาก ฟังก์ชัน flatten_* จะทำงานเร็วกว่าฟังก์ชัน unlist() ฐาน R

แหล่งข้อมูลเพิ่มเติม

วิธีแปลงรายการเป็น data frame ใน R
วิธีแปลงเมทริกซ์เป็นเวกเตอร์ใน R
วิธีแปลงคอลัมน์ data frame เป็น vector ใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *