Lapply กับ sapply ใน r: อะไรคือความแตกต่าง?
ฟังก์ชัน lapply() ใน R สามารถใช้ฟังก์ชันกับแต่ละองค์ประกอบของรายการ เวกเตอร์ หรือกรอบข้อมูล และรับ รายการ ตามนั้น
ฟังก์ชัน sapply() ยังสามารถใช้เพื่อนำฟังก์ชันไปใช้กับแต่ละองค์ประกอบของรายการ เวกเตอร์ หรือกรอบข้อมูล แต่จะส่งคืน เวกเตอร์ เป็นผลลัพธ์
ตัวอย่างต่อไปนี้แสดงวิธีใช้แต่ละฟังก์ชันเหล่านี้ใน R
ตัวอย่าง: วิธีใช้ Apply() ใน R
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน lapply() เพื่อคูณแต่ละค่าในแต่ละคอลัมน์ของ data frame ด้วย 2:
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 lapply(df, function (df) df*2) $x [1] 2 4 4 6 10 $y [1] 8 8 12 14 16 $z [1] 14 14 18 18 18
โปรดทราบว่าผลลัพธ์จะเป็นรายการ
ตัวอย่าง: วิธีใช้ sapply() ใน R
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน sapply() เพื่อคูณแต่ละค่าในแต่ละคอลัมน์ของ data frame ด้วย 2:
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 sapply(df, function (df) df*2) X Y Z [1,] 2 8 14 [2,] 4 8 14 [3,] 4 12 18 [4,] 6 14 18 [5,] 10 16 18
โปรดทราบว่าผลลัพธ์จะเป็นเมทริกซ์เวกเตอร์
โปรดทราบว่าคุณสามารถใช้ as.data.frame() เพื่อส่งคืน data frame แทนที่จะเป็นเมทริกซ์:
#multiply each value in each column by 2 and return a data frame as. data . frame (sapply(df, function (df) df*2)) X Y Z 1 2 8 14 2 4 8 14 3 4 12 18 4 6 14 18 5 10 16 18
เมื่อใดควรใช้ lapply() หรือ sapply()
ใน 99% ของกรณี คุณจะใช้ sapply() เพราะมันสมเหตุสมผลมากกว่าที่จะส่งคืนเวกเตอร์หรือเมทริกซ์
อย่างไรก็ตาม ในบางกรณีที่เกิดขึ้นไม่บ่อยนัก คุณอาจจำเป็นต้องใช้ lapply() แทน หากคุณต้องการให้ผลลัพธ์เป็นรายการ
โปรดทราบว่า sapply() และ lappy() ดำเนินการเดียวกันบนเวกเตอร์ เมทริกซ์ หรือเฟรมข้อมูล ข้อแตกต่างเพียงอย่างเดียวคือในคลาสของวัตถุที่ส่งคืน
แหล่งข้อมูลเพิ่มเติม
วิธีใช้ฟังก์ชันกับแต่ละแถวของกรอบข้อมูลใน R
วิธีใช้ฟังก์ชัน colSums() ใน R
วิธีใช้ฟังก์ชัน rowSums() ใน R