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

练习

    1. 阅读下面三个函数的源代码,弄清楚它们各自做什么,然后想出更好的名字:

f1 <- function(string, prefix) { substr(string, 1, nchar(prefix)) == prefix } f2 <- function(x) { if (length(x) <= 1) return(NULL) x[-length(x)] } f3 <- function(x, y) { rep(y, length.out = length(x)) }

    1. 找一个你最近写过的函数,花五分钟为它及其参数想一个更好的名字。
    1. 比较和对比 rnorm() 与 MASS::mvrnorm()。你如何让它们更加一致?
    1. 论证为什么 norm_r()、norm_d() 等会比 rnorm()、dnorm() 更好。再论证相反的观点。

条件执行

if 语句允许你有条件地执行代码。它看起来像这样:

if (condition) { # 当 condition 为 TRUE 时执行的代码 } else { # 当 condition 为 FALSE 时执行的代码 }

要获取 if 的帮助,你需要用反引号将它包围:?if。如果你还不是一个有经验的程序员,这些帮助文档并不是特别有用,但至少你知道如何找到它了!

下面是一个使用 if 语句的简单函数。这个函数的目标是返回一个逻辑向量,描述向量的每个元素是否被命名:

has_name <- function(x) { nms <- names(x) if (is.null(nms)) { rep(FALSE, length(x))