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

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

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