R与数据科学

R是一门特立独行的语言。我接触过的编程语言有:C、Java、PHP、R、Python和Javascript。除了R,其他语言的入门标志可能是你学会用它的iffor完成了一套处理逻辑;但对R而言,入门标志恰恰是你小心谨慎地避免在R中使用iffor来完成处理逻辑。

R需要一种特殊的学习方法。学习其他的语言好比学理科,理解最重要,得会举一反三,基础扎实了,掌握新工具分分钟的事。学习R却好像念文科,背诵最重要,只要记住做某件事最顺手的包和函数,就能得心应手。

R是一门天生就适合数据科学的语言。数据科学最常见的数据规格是表格型数据,也称为矩形数据:每一行代表一个观测,每一列代表一个特征。R内置数据类型data.frame能够非常自然地表达这种数据。而这种内置带来的深远影响是几乎所有的R工具包都提供了对data.frame的支持,所以R在数据科学领域的生态体系是许多语言所不能匹敌的。

R社区需要感谢一家有情怀的公司RStudio,里面有许多大家耳熟能详的大神:创始人兼CEO J.J. Allaire;首席科学家Hadley Wickham;还有我们中国的高产R包作者谢益辉。

要入门R语言,最好的学习资料是R for Data Science,书里的这张插图很好地诠释了数据科学的工作内容,而R在这些内容上能够提供全套工具:

我依照这个结构把自己的R语言学习笔记整理放在下面,供感兴趣的朋友查阅。

Import

Transform

数据框通用操作:

  • dplyr:SQL操作算子体系1,如filter, mutate, group_by, summarise, arrange
  • tidyr:宽长表转换,列拆分合并
  • data.table:SQL操作算子体系2,dt[where, select, group_by]范式
  • splitstackshape:基于data.table的列拆分宽长表转换

数据类型专题:

Visualise

Model

  • 机器学习基础:线性回归、逻辑回归、梯度下降、牛顿法、正则化
  • 线性模型:lm, glm
  • 决策树rpartrpart.plot
  • 随机森林与GBDT:randomForestgbm

Communicate

  • 静态文档:rmarkdown
  • 交互式网站:shiny

Big Data

Extend

  • Javascript:htmlwidgets
  • C++:Rcpp
  • Java:rJava
  • R包开发,内容待更新:devtoolsroxygen2

其他

R与Python对比

RStudio Cheatsheet