←
PDF 305 / 520 Exercises
→
English · PDF 305
Original PDF page 305
中文 · PDF 305

除非后面跟着 else,否则应始终独占一行。花括号内的代码始终要缩进:

# Good if (y < 0 && debug) { message("Y is negative") } if (y == 0) { log(x) } else { y ^ x } # Bad if (y < 0 && debug) message("Y is negative") if (y == 0) { log(x) } else { y ^ x }

如果 if 语句非常短、可以放在一行内,那么省略花括号是可以接受的:

y <- 10 x <- if (y < 20) "Too low" else "Too high"

我建议仅在非常简短的 if 语句中这样做。否则,完整形式更易于阅读:

if (y < 20) { x <- "Too low" } else { x <- "Too high" }

练习

    1. if 和 ifelse() 之间有什么区别?仔细阅读帮助文档,并构造三个示例来说明它们的关键差异。
    1. 编写一个问候函数,根据一天中的时间说 "good morning,"(早上好)、"good afternoon,"(下午好)或 "good evening,"(晚上好)。(提示:使用一个默认值为 lubridate::now() 的时间参数。这样会更容易测试你的函数。)