本书的摘要及注记

本书很短,100页的篇幅。作者开宗明义指出内容是介绍性的R中的函数与R中函数式编程。
第一章介绍了R中函数的最常见内容,对R有一定使用经验的,掌握R函数里面参数设置、延迟匀速、向量化等特点外,还给出了现有对象更新其中部分内容的主题,这点值得关注,是一个比较影响运行效率的特征。
第二章直接点出了(纯)函数式编程的一个大基本特点:递归。递归可以替代循环,而且使得函数编写过程更加的“数学化“,更容易理解。对使用者而言,能用就好了;开始可能还不太习惯,多用几次也就熟练了。
第三章是R语言为了支持函数式,以及其他一些更多的特点,比如为了运行速度等方面的一些特殊设计。作为R的用户,有所了解即可,日常不太可能用得上,除非要自己动手写基础性的pkg。
第四章介绍高阶函数。这个是函数式编程的特点:函数也是基础性要素了。高阶函数就是其输入参数或输出结果都是函数的那一类函数。对应于数学上的概念,大致上就是泛函分析里的算子了。R基础包就自带了lapply、sapply等一系列的高阶函数,而高阶函数的curry化等内容,参数绑定、解决(深度)递归效率问题的两种技术也都有提及。还是那句话,若仅使用,不用掌握,了解即可。
第五章介绍了Filter、Map和Reduce,对应的就是函数式编程中的筛选、循环、(累加)递归。在实际用的过程中,可以极大简化代码编写方式。其实在类似C++这类语言中,也有等价物或等价实现形式,只是没R这类支持的这么好使用起来很便捷。本章最后一节介绍了purrr包,平时用到的函数式编程的功能都汇集起来了,使得具体干活的时候,非常快,代码易读不易错。(具体用来做data science的, R for Data Science一书一定要反复读,这书有网站,可以直接看)
第六章使用所谓的point-free来介绍函数组合,这个也是函数式编程的鲜明特色,在实际数据处理和建模的时候会相当好用。用运算符(%.%, %>%等符号在不同的包中不太一样,具体用的时候自行选用)把各个函数“拼装”起来,解决问题很方便,尤其是在交互环境的时候,有一种自然语言表达的流畅感。简单来说可以理解为把 f(g(h(x))) 写成 x %>% h %>% g %>% f 的形式,再结合R中那个省略号...表示的可选参数,功能好用到开心。结合第五章的筛选,循环,累计功能,拼接到一起,可以很简短的语句完成传统方式很复杂的写法,比如:
dir('data_file_path') %>% map ( read_xlsx) %>% filter(cond) %>% reduce(rbind) %>% write_xlsx(‘result.xlsx’)
这其实就是把某一文件目录下的数据文件逐一读取,选取所需的部分,将符合条件的部分合并,最后将结果符合条件的汇总结果写到文件中。一个for循环都没有,一行代码几个函数式编程里面的常用高阶函数,就解决问题了。
如果R for Data Science中基本上是按照这种方式来给例子,建议想要提升撸代码效率的小伙伴好好的理解功能,理解几个关键功能的逻辑,多用两次,必然会极大的提升工作效率。