ฟังก์ชันที่คืนค่า NULL
ในแบบฝึกหัดที่ผ่านมาทั้งหมด เราสมมติว่าฟังก์ชันที่นำไปใช้กับ vector หรือ list จะคืนค่าที่มีความหมายเสมอ เช่น ฟังก์ชัน tolower() ที่แปลงอักขระทั้งหมดในสตริงให้เป็นตัวพิมพ์เล็ก แต่ในความเป็นจริง ไม่ใช่ทุกฟังก์ชันที่ทำแบบนี้
สมมติว่าต้องการแสดงโครงสร้างของแต่ละ element ใน list สามารถใช้ฟังก์ชัน str() ซึ่งคืนค่าเป็น NULL:
lapply(list(1, "a", TRUE), str)
การเรียกใช้นี้จะคืนค่าเป็น list ที่มีขนาดเท่ากับ list อินพุต โดยมีค่า NULL ทั้งหมด ในทางกลับกัน หากเรียกใช้
str(TRUE)
โดยตรง จะพิมพ์เฉพาะโครงสร้างของค่า logical ออกทาง console เท่านั้น ไม่ใช่ NULL เนื่องจาก str() ใช้ invisible() เบื้องหลัง ซึ่งจะคืนค่า invisible copy ของค่าที่ส่งกลับ ในกรณีนี้คือ NULL วิธีนี้จะป้องกันไม่ให้ค่าดังกล่าวถูกพิมพ์ออกมาเมื่อผลลัพธ์ของ str() ไม่ได้ถูกกำหนดให้กับตัวแปร
โค้ดด้านล่างนี้จะคืนค่าอะไร (โดย split_low มีอยู่แล้วใน workspace) ลองคิดวิเคราะห์ผลลัพธ์ก่อนที่จะรันโค้ดจริงใน console
lapply(split_low, function(x) {
if (nchar(x[1]) > 5) {
return(NULL)
} else {
return(x[2])
}
})
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
R ระดับกลาง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง
เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา
เริ่มแบบฝึกหัด