在R的以下两种情况下放置if语句的最佳方法是什么?这两个答案都是正确的。
场景1
pow_one <- function(x, print_info = TRUE) {
y <- x ^ 2
if (print_info) {
print(paste(x, "to the power two equals", y))
}
return(y)
}
场景2
pow_two <- function(x, print_info = TRUE) {
if (print_info) {
y <- x ^ 2
print(paste(x, "to the power two equals", y))
return(y)
}
}
答案 0 :(得分:1)
您认为这两个功能相同,但实际上并不相同。仅当print_info
为TRUE
时,它们的行为相同。
考虑这种情况
pow_one(3, FALSE)
#[1] 9
pow_two(3, FALSE)
pow_one
返回9,而pow_two
不返回任何内容,因为您的return
位于if
的{{1}}块中,我认为这不是您的预期行为。
“最佳”是主观的,但是IMO pow_two
比pow_one
要好,因为无论是否打印,pow_two
return
都受{{1}控制}。此外,最好具有一致的功能行为。它应该始终返回值,或者永远不返回值。