
175
第 6 章
数据转换
虽然传统的编程语言使用循环(loop), 但 R 软件传统上鼓励使用向量化操作和 apply
系列函数来批量处理数据,从而大大简化了计算。没有什么来阻止你在 R 中编写循环,
它将你的数据分成你想要的任何小块,然后在每个小块上进行操作。但是,在许多情况
下,使用向量化函数可以提高代码的速度、可读性和可维护性。
然而,在最近的发展中,tidyverse 中的添加包
—
特别是其中的 purrr 和 dplyr 包
—
在 R 中引入了新的术语,使得上述概念更容易学习,并且更加一致。purrr 这个名字来
源于短语“纯 R”( Pure R)。“纯函数”(pure function)是一个函数,其结果仅由其输入决
定,并且不会产生任何副作用。然而,你不必为了使用 purrr 而去理解函数式编程概念。
大多数用户需要知道的是,purrr 包含的函数可以帮助我们以一种与 tidyverse 中的其他
添加包(如 dplyr)很好地融合的方式对数据进行“块对块”(chunk by chunk)操作。
基础的 R 有许多 apply 函数
—
apply、lapply、sapply、tapply 和 mapply
—
以
及 by 和 split。这些是基础 R 多年来一直有效的基本函数。我们在决定到底专注于介
绍基础 R 的 apply 函数,还是介绍更新的“ tidy”方法之间有过艰难的决定。经过多
次辩论,我们选择试图介绍 purrr 方法并提及基础的 R 方法,并在一些地方对两者进
行说明。purrr ...