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

i <- i + 1 }

下面我们用 while 循环来找出连续得到三次正面需要多少次尝试:

flip <- function() sample(c("T", "H"), 1)

flips <- 0 nheads <- 0 while (nheads < 3) { if (flip() == "H") { nheads <- nheads + 1 } else { nheads <- 0 } flips <- flips + 1 } flips #> [1] 3

我只是简单提一下 while 循环,因为我几乎从不使用它们。它们最常用于模拟,而这超出了本书的范围。不过,了解它们的存在是件好事,这样你就能应对那些迭代次数事先未知的问题。

练习

    1. 假设你有一个目录,里面装满了你想读入的 CSV 文件。你把它们的路径存放在一个向量中,files < dir("data/", pattern = "\.csv$", full.names = TRUE),现在想用 read_csv() 逐个读取它们。请编写一个 for 循环,将它们加载到一个单独的数据框中。
    1. 如果使用 for (nm in names(x)) 而 x 没有名字,会发生什么?如果只有部分元素有名字呢?如果名字不唯一呢?
    1. 编写一个函数,打印数据框中每个数值列的均值及其名称。例如,show_mean(iris) 会打印:show_mean(iris) #> Sepal.Length: 5.84 #> Sepal.Width: 3.06 #> Petal.Length: 3.76 #> Petal.Width: 1.20