English · PDF 350
out[i] <- fun(df[[i]]) } out } col_summary(df, median) #> [1] 0.237 -0.218 0.254 -0.133 col_summary(df, mean) #> [1] 0.2026 -0.2068 0.1275 -0.0917
将一个函数传递给另一个函数是一个非常强大的思想,也是使 R 成为函数式编程语言的行为之一。理解这个思想可能需要你花一些时间,但这份投入是值得的。在本章的剩余部分,你将学习并使用 purrr 包,它提供的函数可以消除许多常见 for 循环的需要。R 基础包中的 apply 函数族(apply()、lapply()、tapply() 等)解决类似的问题,但 purrr 更加一致,因此更容易学习。
使用 purrr 函数代替 for 循环的目标是让你能够将常见的列表操作难题分解为独立的片段:
这种结构使解决新问题变得更容易。当你重读旧代码时,它也让你更容易理解自己对旧问题的解决方案。