←
PDF 343 / 520 For Loop Variations
→
English · PDF 343
Original PDF page 343
中文 · PDF 343
  • c. 将歌曲《99 Bottles of Beer on the Wall》改写为一个函数。将其泛化为:任意数量的任意容器、装有任意液体、放在任意表面上。
    1. 常见的一种 for 循环没有预先分配输出,而是在每一步中增加向量的长度:

output <- vector("integer", 0) for (i in seq_along(x)) { output <- c(output, lengths(x[[i]])) } output

这对性能有什么影响?设计并执行一个实验。

for 循环的变体

掌握了基本的 for 循环之后,还有一些变体是你应该了解的。无论你如何进行迭代,这些变体都很重要,所以即使在你掌握了下一节将学到的函数式编程(FP)技术之后,也不要忘记它们。

for 循环的基本主题有四种变体:

  • 修改现有对象,而不是创建新对象。
  • 按名称或值循环,而不是按索引循环。
  • 处理长度未知的输出。
  • 处理长度未知的序列。

修改现有对象

有时你想使用 for 循环来修改一个现有对象。例如,回想一下第 15 章中我们遇到的挑战:我们想要对数据框中的每一列进行重新缩放:

df <- tibble( a = rnorm(10), b = rnorm(10), c = rnorm(10), d = rnorm(10) ) rescale01 <- function(x) {