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

练习

    1. 为什么 TRUE 不是 rescale01() 的参数?如果 x 包含一个缺失值且 na.rm 为 FALSE,会发生什么?
    1. 在 rescale01() 的第二个变体中,无穷值保持不变。请重写 rescale01(),使 -Inf 被映射为 0,Inf 被映射为 1。
    1. 练习将以下代码片段转换为函数。思考每个函数的作用。你会给它起什么名字?它需要多少个参数?你能重写它使其更具表现力或更少重复吗?

mean(is.na(x))

x / sum(x, na.rm = TRUE)

sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE)

    1. 按照 http://nicercode.github.io/intro/writing-functions.html 编写你自己的函数来计算数值向量的方差和偏度。
    1. 编写 both_na() 函数,该函数接受两个等长的向量,并返回两个向量中同一位置均为 NA 的位置数量。
    1. 以下函数的作用是什么?尽管它们很短,为什么仍然有用? is_directory <- function(x) file.info(x)$isdir is_readable <- function(x) file.access(x, 4) == 0
    1. 阅读 完整歌词 致“小兔子Foo Foo”。这首歌里有很多重复的内容。扩展最初的管道示例来重新创建完整的歌曲,并使用函数来减少重复。

函数是为人类和计算机服务的

重要的是要记住,函数不仅是为计算机服务的,也是为人类服务的。R 并不关心你的函数叫什么名字,也不关心它包含什么注释,但这些对人类读者来说很重要。本节讨论在编写人类能够理解的函数时,你应该牢记的一些事项。