7
วิธี“ แก้ไข” เพื่อระบุอาร์กิวเมนต์ที่เลือกระบุได้ในฟังก์ชัน R
ฉันสนใจในสิ่งที่เป็น "วิธีที่ถูกต้อง" ในการเขียนฟังก์ชันด้วยอาร์กิวเมนต์ที่เป็นตัวเลือกใน R เมื่อเวลาผ่านไปฉันสะดุดโค้ดสองสามชิ้นที่ใช้เส้นทางอื่นที่นี่และฉันไม่สามารถหาตำแหน่งที่เหมาะสม (เป็นทางการ) ในหัวข้อนี้ จนถึงตอนนี้ฉันได้เขียนข้อโต้แย้งเพิ่มเติมดังนี้: fooBar <- function(x,y=NULL){ if(!is.null(y)) x <- x+y return(x) } fooBar(3) # 3 fooBar(3,1.5) # 4.5 ฟังก์ชั่นเพียงแค่ส่งกลับข้อโต้แย้งของมันถ้าxมีให้เท่านั้น มันใช้ค่าเริ่มต้นNULLสำหรับอาร์กิวเมนต์ที่สองและหากอาร์กิวเมนต์นั้นไม่เป็นNULLเช่นนั้นฟังก์ชันจะเพิ่มตัวเลขสองตัว อีกทางเลือกหนึ่งสามารถเขียนฟังก์ชั่นเช่นนี้ (โดยที่อาร์กิวเมนต์ที่สองจำเป็นต้องระบุด้วยชื่อ แต่สามารถunlist(z)ระบุหรือกำหนดz <- sum(...)แทนได้): fooBar <- function(x,...){ z <- list(...) if(!is.null(z$y)) x <- x+z$y return(x) } fooBar(3) # 3 fooBar(3,y=1.5) # 4.5 ส่วนตัวแล้วฉันชอบเวอร์ชั่นแรกมากกว่า อย่างไรก็ตามฉันเห็นทั้งดีและไม่ดีได้ทั้งคู่ …