本篇推文就不介绍为什么需要学R了,你能打开这篇文章,说明你有学习R的想法或者正在学习R的路上。
今天简单介绍下R语言的学习路线以及R学习资源汇总。
下面涉及到的R语言书籍我打包了PDF文件,有需要的在本公众号后台回复
20210112
即可免费获取,整理不易,伸手党勿扰。
学习R语言的最好方法就是在实践中学习,多多动手,多码代码,这个最重要。
纸上得来终觉浅,绝知此事要躬行。
刚开始学习R语言,可以看一些免费入门视频,可以在B站上面搜,B站有很多免费的R语言入门视频,比如《尚学堂尹鸿的R语言速成实战》[1],这个视频是免费的,视频讲义素材来源于《R语言实战》的第一章到第六章,这几章可以边看书边跟着视频学习,用来简单入门基本够了。
这个为生信学习和生信作图打造的开源R教程真香!!!
另外也可以试试一个离线的交互式学习R包——swirl[2]包,可以在R软件中安装这个包,然后看看这个R包的帮助文档[3]学习下怎么用。
看看这个包的帮助文档[5]学习怎么用。
也可以在datacamp[4]网站中选择它的在线版本进行学习。
如果不想看视频,可以先阅读一些R语言入门的小手册,比如说CRAN[5]上的R介绍小手册,对R语言有一个初步了解。
或者阅读几本不错的R语言入门书籍,比如说《R语言实战》[6]、《R数据科学》[7]等。对于初学者,建议看中文版即可。另外李东风老师的《R语言教程》、王敏杰老师的《数据科学中的R语言》以及张敬信老师的《R语言编程:基于tidyverse》也很不错,极力推荐,并且这三本书也开源。
英语不错的可以直接看英文原版,比如说《R for Data Science》[8],英文原版有时候更容易理解,有的中文版直译后没有那种味道了,并且英文版知识更新速度更快。
可以从R官网[9]中下载和安装R软件,安装不复杂,要是实在不会,就网上百度一下,有很多教程。
安装好R后,可以选择一个R集成开发环境(IDE),这里强烈推荐安装RStudio[10],RStudio是目前最受欢迎的R集成开发环境,体验效果极佳。
并且RStudio上也提供了很多R学习资源,可以点击菜单栏查看免费获取。
R语言学习 - 入门环境Rstudio
R包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。
在安装R软件时,R会自动安装一些基础R包[11],这些基础包提供了种类繁多的默认函数和数据集,其他大多数R包都需要自己手动安装,比如说ggplot2[12]包、tidyverse[13]包。
安装R包主要有三条途径。
大多数R包都可以从CRAN上安装,只需要在命令行中直接输入代码install.packages("R包名")
即可自动安装,建议在Rstudio中将镜像地址改为离你最近的地址。
在CRAN上,R官方专门维护了41个Task Views[14],专门将一些功能相近、同一领域的包罗列在一起,比如说Survival[15]系列,从这里你可以快速找到你需要的一组R包。
除了CRAN,还可以从bioconductor[16]上安装R包,这个数据库专门存储一些生物信息学领域的R包。
Bioconductor上的R包安装可以参考官方网站的安装方法[17],与CRAN类似。
install.packages("BiocManager")
BiocManager::install(c("GenomicFeatures", "AnnotationDbi"))
另外还可以从github[18]上安装R包,有的R包作者没有将自己的代码上传到以上平台,选择存储在github上,我们可以使用devtools[19]包从github上安装R包。
对于github上的R包,可以在github上面检索这个R包,找到这个包的官方地址,一般R包作者会在里面说明安装方式,比如说ggExtra[20]包。
install.packages("devtools")
devtools::install_github("daattali/ggExtra")
如果存在一些怪里怪气的R包,你上面三种方式都安装不了,可以考虑使用本地离线安装,先下载到这个R包的压缩包,再在RStudio中安装,R包的压缩包可以在上面三个平台找。
如果这些方式都安装不了,那大概率说明这个包存在问题。
R包目前有1万多个,想要快速查找一个自己需要的包有时比较麻烦,我们可以使用Rdocumentation[21]、inside-R[22]等网站从CRAN、github和bioconductor上快速查找需要的R包。
R支持各种数据格式的导入,如下图,R可从键盘、文本、Excel和Access、统计软件、特殊格式文件、数据库管理系统、专业数据库、网站和在线服务中导入数据。
来自《R语言实战》不同的数据格式,需要不同的R包来导入。
文本格式文件可以使用utils包的read.table()[23]函数和read.csv()[24]函数导入,还有readr[25]包和data.table包的fread()[26]函数也可以快速导入数据。
如果是Excel格式文件,可以使用readxl[27]包导入,另外gdata[28]包和XLConnect[29]包也可以导入Excel数据。更多Excel文件导入到R中可以参考《Reading and Importing Excel Files into R》[30]这篇文章。
SAS、STATA和SPSS软件生成的三类数据格式文件可以使用Hadley的haven[31]包导入,也可以使用foreign[32]包导入,foreign包不但可以导入这三个数据格式文件,还可以导入其他格式文件,比如Systat和Weka格式,同时也可以再次将数据以各种格式从R中导出。
如果需要导入数据库中的数据文件,不同的数据库所要求的包不同,比如说MySQL数据库,可以使用MySQL[33]包读取,RpostgreSQL[34]包和ROracle[35]包也可以。
另外也可以使用DBI[36]包中的函数去指定获取不同的数据库数据。
如果是想使用R来获取网络上的数据,可以使用API或者rvest[37]包来抓取数据。网络数据获取入门可以查看Rolf Fredheim的博客[38],这里有很多资源可以获取。
大多数直接导入R中的数据是不能直接用来统计分析和绘图的,需要进行一定的数据处理。
将"脏"数据清洗成"干净"数据对于后续的统计分析和数据可视化非常重要。
R语言内置了很多基础函数来处理数据,但是这些函数数据处理效率一般般,并且也不是那么好用,这里推荐一些不错的数据处理R包和函数。
tidyr[39]包可以用来整理数据,一个好的数据集应该是一行代表一个观测对象,一列代表一个变量,这样的数据集才方便我们使用。要了解有关tidyr包的更多信息,可以查看tidyr包的帮助文件[40]。
如果数据集中需要进行字符串操作,可以使用stringr[41]包,可以学习这个stringr包的帮助文件[42],这里面包含许多有用的示例帮助快速入门。
dplyr包是专门用于数据分析的一个R包,也是tidyverse数据科学系列包中的核心R包,在进行常用的数据分析操作时,比如说行筛选、行排列、选择列、创建列等操作,可以优先使用dplyr包,简单、方便、效率高。要了解有关dplyr包的更多信息,可以学习RStudio上的这个小手册[43]。
当数据集数据量非常大时,可以使用data.table[44]包。要了解更多data.table包的信息,可以学习包的帮助文件[45],也可以阅读黄天元的《R语言数据高效处理指南》[46],这本书专门介绍了R语言中的数据处理,作者也公开了书籍中的源代码[47]。
如果需要处理日期时间类型数据,可以使用lubridate[48]包。要了解有关lubridate包的更多信息,可以学习包的帮助文件[49]
基础包处理时间序列数据的能力有限,可以使用zoo[50]、xts[51]和quantmod[52]包来处理,也可以学习Springer出版的《Time Series Analysis and Its Applications》[53]。
如果想全面学习R的高效数据处理,可以阅读《R数据科学》、《Data Manipulation with R》[54]或《Data Wrangling with R》[55]这几本书,也可以学习RStudio出的《Data Wrangling with R》[56]视频。如果您在处理数据时遇到问题,可以查看这15种解决方案[57],也许就能帮到你。
R语言最出色的功能之一就是数据可视化啦。
ggplot2包是目前最受欢迎的可视化R包,你可以在ggplot2官网[58]学习怎么使用ggplot2包,也可以查看RStudio出品的cheatsheet手册[59]或者阅读这本即将出版的《ggplot2: Elegant Graphics for Data Analysis》[60],当然《R数据可视化手册》[61]也是一本绝佳的可视化学习书籍。
除了ggplot2包外,学习一些交互式R包也是很有必要的,比如ggvis[62]、googleVis[63]、Plotly[64]。
另外可以在这个task view[65]上查看其他的数据可视化R包。
如果绘图时存在问题,可以查看这篇博客文章[66],也许可以帮到你。
在R的task view中,有专门的主题用来处理空间数据[67],教你绘制漂亮的地理图形。
首先可以学习下ggmap[68]包中的示例,这个包可以让你在静态地图上显示来自Google地图和开放式街道地图等来源的空间数据和模型。另外还可以学习下maptools[69]包、choroplethr[70]包和tmap[71]包。
如果你需要一些更详细的教程,可以查看这篇帮助文档[72]以及一些R可视化的博客,如FlowingData[73]。
目前R中最新的可视化小工具是HTML widgets[74],HTML widgets的工作方式与R相同,但它创建了交互式Web可视化效果,如动态地图 (leaflet[75])、时间序列数据图表(dygraphs[76])和交互式表(DataTables[77])。有一些非常不错的HTML widgets示例[78],以及如何创建自己的HTML widgets的文档[79],有兴趣的可以查看阅读。
R语言绘制出来的图形色彩优美,除了R本身的功劳外,也得益于一些出色的配色R包,比如说RColorBrewer[80]包和ggsci[81]包,还有一些主题包也不错,比如说ggthemr[82]包、tvthemes[83]。
图形排版是可视化好图形后遗留的一个小问题了,R中可以进行排版的包有好几个。
patchwork[84]包应该是最赞的一个排版包了,这个包排版自定义程度很高,能满足各种排版需要。还有一些包排版也不错,比如说cowplot[85]、Rmisc[86]、ggpubr[87]。
机器学习一些常用的包有caret[88]、rpart[89]和randomForest[90],这些包也有一些不错的学习资源。如果只是入门学习,可以看看这本指导手册[91],也许会有帮助。
另外,也可以读读《Mastering Machine Learning with R》[92]和《Machine Learning with R》[93]、《Practical Data Science With R》[94]、《A Survival Guide to Data Science with R》[95]这几本书。
如果你需要一些手把手的教程,可以看看Kaggle机器学习课程[96]和Wiekvoet的博客[97]。
R Markdown为数据科学提供了一种统一的写作框架,可以集成代码、输出结果和文本注释。R Markdown文档是完全可重用的,并支持多种输出形式,包括PDF、Word、幻灯片等。
R Markdown常见的学习资料包括R Markdown速查表、R Markdown用户指南,在RStudio中可以找到。
除了R markdown,还可以学习下Shiny[98]。Shiny让R构建交互式Web应用程序变得很简单,我们可以将分析变成交互式Web应用程序,而不需要了解HTML、CSS或Javascript等。
RStudio是一个很棒的R学习网站,上面有很多很棒的的Shiny学习资源[99],可帮助快速入门Shiny,包括一些视频教程合集[100]以及一些高级主题和大量示例[101]。
翻译自一篇博客,具体链接点击阅读原文。
[1]
R语言速成实战: https://www.bilibili.com/video/BV1tW411x7rW?p=1
[2]swirl: https://swirlstats.com/
[3]swirl文档: https://swirlstats.com/students.html
[4]datacamp: https://www.datacamp.com/courses/r-programming-with-swirl
[5]CRAN: https://cran.r-project.org/
[6]R语言实战: https://book.douban.com/subject/26785199/
[7]R数据科学: https://book.douban.com/subject/30277904/
[8]R for Data Science: https://r4ds.had.co.nz/index.html
[9]R: https://cran.r-project.org/index.html
[10]RStudio: https://rstudio.com/
[11]Base Package: https://www.rdocumentation.org/packages/base/versions/3.6.2
[12]ggplot2: https://github.com/tidyverse/ggplot2/
[13]tidyverse: https://www.tidyverse.org/
[14]Task Views: https://cran.r-project.org/
[15]Survival topic: https://cran.r-project.org/web/views/Survival.html
[16]bioconductor: https://bioconductor.org/
[17]Install Bioconductor Packages: https://bioconductor.org/install/#install-bioconductor-packages
[18]github: https://github.com/
[19]devtools: https://cran.r-project.org/web/packages/devtools/index.html
[20]ggExtra: https://github.com/daattali/ggExtra
[21]Rdocumentation: https://www.rdocumentation.org/
[22]MRAN: https://mran.microsoft.com/
[23]read.table: https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/read.table
[24]read.csv: https://www.rdocumentation.org/packages/utils/versions/3.6.2/topics/read.table
[25]readr: https://github.com/tidyverse/readr
[26]fread: https://www.rdocumentation.org/packages/data.table/versions/1.13.6/topics/fread
[27]readxl: https://github.com/tidyverse/readxl
[28]gdata: https://cran.r-project.org/web/packages/gdata/
[29]XLConnect: https://cran.r-project.org/web/packages/XLConnect/
[30]Reading and Importing Excel Files into R: https://www.datacamp.com/community/tutorials/r-tutorial-read-excel-into-r
[31]haven: https://github.com/tidyverse/haven
[32]foreign: https://cran.r-project.org/web/packages/foreign/index.html
[33]MySQL: https://cran.r-project.org/web/packages/RMySQL/
[34]RpostgreSQL: https://cran.r-project.org/web/packages/RPostgreSQL
[35]ROracle: https://cran.r-project.org/web/packages/ROracle/index.html
[36]DBI: https://cran.r-project.org/web/packages/DBI
[37]rvest: https://cran.r-project.org/web/packages/rvest/
[38]Rolf Fredheim: http://blog.rolffredheim.com/2014/02/web-scraping-basics.html
[39]tidyr: https://cran.r-project.org/web/packages/tidyr/
[40]tidy-data: https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html
[41]stringr: https://cran.r-project.org/web/packages/stringr
[42]stringr vignette: https://cran.r-project.org/web/packages/stringr/stringr.pdf
[43]dplyr cheatsheet: https://rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf
[44]data.table: https://cran.r-project.org/web/packages/data.table/
[45]data.table 介绍: https://cran.r-project.org/web/packages/data.table/vignettes/datatable-intro.html
[46]R语言数据高效处理指南: https://zhuanlan.zhihu.com/p/82480894
[47]书籍源代码: 后台回复20210112即可获取
[48]lubridate: https://cran.r-project.org/web/packages/lubridate/
[49]lubridate vignettes: https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.html
[50]zoo: https://cran.r-project.org/web/packages/zoo
[51]xts: https://cran.r-project.org/web/packages/xts
[52]quantmod: https://cran.r-project.org/web/packages/quantmod
[53]时间序列分析及应用: https://www.springer.com/gp/book/9783319524511
[54]Data Manipulation with R: https://www.springer.com/gp/book/9780387747309
[55]Data Wrangling with R: https://www.springer.com/gp/book/9783319455983
[56]Data Wrangling with R: https://rstudio.com/resources/webinars/data-wrangling-with-r-and-rstudio/
[57]15 solutions: https://www.datacamp.com/community/tutorials/15-easy-solutions-data-frame-problems-r
[58]ggplot2官网: http://ggplot2.org/
[59]ggplot2 cheatsheet: https://rstudio.com/resources/cheatsheets/
[60]ggplot2-book: https://ggplot2-book.org/
[61]R Graphics Cookbook: https://book.douban.com/subject/25873705/
[62]ggvis: https://ggvis.rstudio.com/
[63]googleVis: https://github.com/mages/googleVis
[64]Plotly: https://plotly.com/r/
[65]Graphics view: https://cran.r-project.org/web/views/Graphics.html
[66]R绘图的15个常见问题: https://www.datacamp.com/community/tutorials/15-questions-about-r-plots
[67]空间数据: https://cran.r-project.org/web/views/Spatial.html
[68]ggmap: https://cran.r-project.org/web/packages/ggmap/index.html
[69]maptools: http://maptools.r-forge.r-project.org/
[70]choroplethr: https://cran.r-project.org/web/packages/choroplethr/index.html
[71]tmap: https://github.com/mtennekes/tmap
[72]空间数据可视化文档: 后台回复20210112即可获取
[73]FlowingData: https://flowingdata.com/
[74]HTML widgets: http://www.htmlwidgets.org/
[75]leaflet: https://rstudio.github.io/leaflet/
[76]dygraphs: https://rstudio.github.io/dygraphs/
[77]DataTables: https://rstudio.github.io/DT/
[78]showcase: http://www.htmlwidgets.org/showcase_leaflet.html
[79]documentation: http://www.htmlwidgets.org/develop_intro.html
[80]RColorBrewer: https://cran.r-project.org/web/packages/RColorBrewer/
[81]ggsci: https://github.com/nanxstats/ggsci
[82]ggthemr: https://github.com/Mikata-Project/ggthemr
[83]tvthemes: https://github.com/Ryo-N7/tvthemes
[84]patchwork: https://patchwork.data-imaginist.com/index.html
[85]cowplot: https://github.com/wilkelab/cowplot
[86]Rmisc: https://cran.r-project.org/package=Rmisc
[87]ggpubr: https://github.com/kassambara/ggpubr
[88]caret: https://cran.r-project.org/web/packages/caret/
[89]rpart: https://cran.r-project.org/web/packages/rpart/
[90]randomForest: https://cran.r-project.org/web/packages/randomForest/
[91]机器学习指导手册: https://machinelearningmastery.com/
[92]Mastering Machine Learning with R: https://www.oreilly.com/library/view/mastering-machine-learning/9781789618006/
[93]Machine Learning with R: https://www.oreilly.com/library/view/machine-learning-with/9781617296574/
[94]Practical Data Science with R: https://www.manning.com/books/practical-data-science-with-r
[95]A Survival Guide to Data Science with R: https://togaware.com/onepager/
[96]Kaggle Machine Learning course: https://www.datacamp.com/courses/kaggle-tutorial-on-machine-learing-the-sinking-of-the-titanic?tap_a=5644-dce66f&tap_s=10907-287229
[97]Wiekvoet博客: https://wiekvoet.blogspot.be/
[98]Shiny: https://shiny.rstudio.com/
[99]Shiny资源: https://shiny.rstudio.com/tutorial/
[100]Shiny视频: https://shiny.rstudio.com/articles/
[101]Shiny示例: https://shiny.rstudio.com/gallery/
机器学习
后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集