【万字长文】R语言入门学习路线与资源汇总

【万字长文】R语言入门学习路线与资源汇总_第1张图片

本篇推文就不介绍为什么需要学R了,你能打开这篇文章,说明你有学习R的想法或者正在学习R的路上。

今天简单介绍下R语言的学习路线以及R学习资源汇总。

下面涉及到的R语言书籍我打包了PDF文件,有需要的在本公众号后台回复20210112即可免费获取,整理不易,伸手党勿扰。

1. R基础入门

学习R语言的最好方法就是在实践中学习,多多动手,多码代码,这个最重要

纸上得来终觉浅,绝知此事要躬行。

刚开始学习R语言,可以看一些免费入门视频,可以在B站上面搜,B站有很多免费的R语言入门视频,比如《尚学堂尹鸿的R语言速成实战》[1],这个视频是免费的,视频讲义素材来源于《R语言实战》的第一章到第六章,这几章可以边看书边跟着视频学习,用来简单入门基本够了。

这个为生信学习和生信作图打造的开源R教程真香!!!

【万字长文】R语言入门学习路线与资源汇总_第2张图片

另外也可以试试一个离线的交互式学习R包——swirl[2]包,可以在R软件中安装这个包,然后看看这个R包的帮助文档[3]学习下怎么用。

看看这个包的帮助文档[5]学习怎么用。

【万字长文】R语言入门学习路线与资源汇总_第3张图片

也可以在datacamp[4]网站中选择它的在线版本进行学习。

【万字长文】R语言入门学习路线与资源汇总_第4张图片

如果不想看视频,可以先阅读一些R语言入门的小手册,比如说CRAN[5]上的R介绍小手册,对R语言有一个初步了解。

【万字长文】R语言入门学习路线与资源汇总_第5张图片

或者阅读几本不错的R语言入门书籍,比如说《R语言实战》[6]、《R数据科学》[7]等。对于初学者,建议看中文版即可。另外李东风老师的《R语言教程》、王敏杰老师的《数据科学中的R语言》以及张敬信老师的《R语言编程:基于tidyverse》也很不错,极力推荐,并且这三本书也开源。

【万字长文】R语言入门学习路线与资源汇总_第6张图片

英语不错的可以直接看英文原版,比如说《R for Data Science》[8],英文原版有时候更容易理解,有的中文版直译后没有那种味道了,并且英文版知识更新速度更快。

2. 安装R和RStudio

可以从R官网[9]中下载和安装R软件,安装不复杂,要是实在不会,就网上百度一下,有很多教程。

安装好R后,可以选择一个R集成开发环境(IDE),这里强烈推荐安装RStudio[10],RStudio是目前最受欢迎的R集成开发环境,体验效果极佳。

并且RStudio上也提供了很多R学习资源,可以点击菜单栏查看免费获取。

R语言学习 - 入门环境Rstudio

【万字长文】R语言入门学习路线与资源汇总_第7张图片

3. 安装R包

R包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。

在安装R软件时,R会自动安装一些基础R包[11],这些基础包提供了种类繁多的默认函数和数据集,其他大多数R包都需要自己手动安装,比如说ggplot2[12]包、tidyverse[13]包。

安装R包主要有三条途径。

3.1 CRAN

大多数R包都可以从CRAN上安装,只需要在命令行中直接输入代码install.packages("R包名")即可自动安装,建议在Rstudio中将镜像地址改为离你最近的地址。

【万字长文】R语言入门学习路线与资源汇总_第8张图片

在CRAN上,R官方专门维护了41个Task Views[14],专门将一些功能相近、同一领域的包罗列在一起,比如说Survival[15]系列,从这里你可以快速找到你需要的一组R包。

【万字长文】R语言入门学习路线与资源汇总_第9张图片

3.2 bioconductor

除了CRAN,还可以从bioconductor[16]上安装R包,这个数据库专门存储一些生物信息学领域的R包。

【万字长文】R语言入门学习路线与资源汇总_第10张图片

Bioconductor上的R包安装可以参考官方网站的安装方法[17],与CRAN类似。

【万字长文】R语言入门学习路线与资源汇总_第11张图片

install.packages("BiocManager")
BiocManager::install(c("GenomicFeatures", "AnnotationDbi"))

3.3 github

另外还可以从github[18]上安装R包,有的R包作者没有将自己的代码上传到以上平台,选择存储在github上,我们可以使用devtools[19]包从github上安装R包。

对于github上的R包,可以在github上面检索这个R包,找到这个包的官方地址,一般R包作者会在里面说明安装方式,比如说ggExtra[20]包。

【万字长文】R语言入门学习路线与资源汇总_第12张图片

install.packages("devtools")
devtools::install_github("daattali/ggExtra")

3.4 本地安装

如果存在一些怪里怪气的R包,你上面三种方式都安装不了,可以考虑使用本地离线安装,先下载到这个R包的压缩包,再在RStudio中安装,R包的压缩包可以在上面三个平台找。

如果这些方式都安装不了,那大概率说明这个包存在问题。

【万字长文】R语言入门学习路线与资源汇总_第13张图片

3.5 查找需要R包

R包目前有1万多个,想要快速查找一个自己需要的包有时比较麻烦,我们可以使用Rdocumentation[21]、inside-R[22]等网站从CRAN、github和bioconductor上快速查找需要的R包。

【万字长文】R语言入门学习路线与资源汇总_第14张图片

4. R与数据导入

R支持各种数据格式的导入,如下图,R可从键盘、文本、Excel和Access、统计软件、特殊格式文件、数据库管理系统、专业数据库、网站和在线服务中导入数据。

【万字长文】R语言入门学习路线与资源汇总_第15张图片

来自《R语言实战》

不同的数据格式,需要不同的R包来导入。

4.1 文本文件

文本格式文件可以使用utils包的read.table()[23]函数和read.csv()[24]函数导入,还有readr[25]包和data.table包的fread()[26]函数也可以快速导入数据。

4.2 Excel文件

如果是Excel格式文件,可以使用readxl[27]包导入,另外gdata[28]包和XLConnect[29]包也可以导入Excel数据。更多Excel文件导入到R中可以参考《Reading and Importing Excel Files into R》[30]这篇文章。

4.3 SAS、STATA和SPSS文件

SAS、STATA和SPSS软件生成的三类数据格式文件可以使用Hadley的haven[31]包导入,也可以使用foreign[32]包导入,foreign包不但可以导入这三个数据格式文件,还可以导入其他格式文件,比如Systat和Weka格式,同时也可以再次将数据以各种格式从R中导出。

4.4 数据库文件

如果需要导入数据库中的数据文件,不同的数据库所要求的包不同,比如说MySQL数据库,可以使用MySQL[33]包读取,RpostgreSQL[34]包和ROracle[35]包也可以。

另外也可以使用DBI[36]包中的函数去指定获取不同的数据库数据。

4.5 网络数据

如果是想使用R来获取网络上的数据,可以使用API或者rvest[37]包来抓取数据。网络数据获取入门可以查看Rolf Fredheim的博客[38],这里有很多资源可以获取。

5. R与数据处理

大多数直接导入R中的数据是不能直接用来统计分析和绘图的,需要进行一定的数据处理。

将"脏"数据清洗成"干净"数据对于后续的统计分析和数据可视化非常重要。

R语言内置了很多基础函数来处理数据,但是这些函数数据处理效率一般般,并且也不是那么好用,这里推荐一些不错的数据处理R包和函数。

5.1 tidyr包

tidyr[39]包可以用来整理数据,一个好的数据集应该是一行代表一个观测对象,一列代表一个变量,这样的数据集才方便我们使用。要了解有关tidyr包的更多信息,可以查看tidyr包的帮助文件[40]

5.2 stringr包

如果数据集中需要进行字符串操作,可以使用stringr[41]包,可以学习这个stringr包的帮助文件[42],这里面包含许多有用的示例帮助快速入门。

5.3 dplyr包

dplyr包是专门用于数据分析的一个R包,也是tidyverse数据科学系列包中的核心R包,在进行常用的数据分析操作时,比如说行筛选、行排列、选择列、创建列等操作,可以优先使用dplyr包,简单、方便、效率高。要了解有关dplyr包的更多信息,可以学习RStudio上的这个小手册[43]

5.4 data.table包

当数据集数据量非常大时,可以使用data.table[44]包。要了解更多data.table包的信息,可以学习包的帮助文件[45],也可以阅读黄天元的《R语言数据高效处理指南》[46],这本书专门介绍了R语言中的数据处理,作者也公开了书籍中的源代码[47]

5.5 lubridate包

如果需要处理日期时间类型数据,可以使用lubridate[48]包。要了解有关lubridate包的更多信息,可以学习包的帮助文件[49]

5.6 zoo、xts和quantmod包

基础包处理时间序列数据的能力有限,可以使用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],也许就能帮到你。

6. 数据可视化

R语言最出色的功能之一就是数据可视化啦。

6.1 ggplot2包

ggplot2包是目前最受欢迎的可视化R包,你可以在ggplot2官网[58]学习怎么使用ggplot2包,也可以查看RStudio出品的cheatsheet手册[59]或者阅读这本即将出版的《ggplot2: Elegant Graphics for Data Analysis》[60],当然《R数据可视化手册》[61]也是一本绝佳的可视化学习书籍。

6.2 交互式绘图包

除了ggplot2包外,学习一些交互式R包也是很有必要的,比如ggvis[62]、googleVis[63]、Plotly[64]

另外可以在这个task view[65]上查看其他的数据可视化R包。

如果绘图时存在问题,可以查看这篇博客文章[66],也许可以帮到你。

6.3 空间地理图形

在R的task view中,有专门的主题用来处理空间数据[67],教你绘制漂亮的地理图形。

首先可以学习下ggmap[68]包中的示例,这个包可以让你在静态地图上显示来自Google地图和开放式街道地图等来源的空间数据和模型。另外还可以学习下maptools[69]包、choroplethr[70]包和tmap[71]包。

如果你需要一些更详细的教程,可以查看这篇帮助文档[72]以及一些R可视化的博客,如FlowingData[73]

6.4 可视化小工具

目前R中最新的可视化小工具是HTML widgets[74],HTML widgets的工作方式与R相同,但它创建了交互式Web可视化效果,如动态地图 (leaflet[75])、时间序列数据图表(dygraphs[76])和交互式表(DataTables[77])。有一些非常不错的HTML widgets示例[78],以及如何创建自己的HTML widgets的文档[79],有兴趣的可以查看阅读。

6.5 配色方案

R语言绘制出来的图形色彩优美,除了R本身的功劳外,也得益于一些出色的配色R包,比如说RColorBrewer[80]包和ggsci[81]包,还有一些主题包也不错,比如说ggthemr[82]包、tvthemes[83]

6.6 图形排版

图形排版是可视化好图形后遗留的一个小问题了,R中可以进行排版的包有好几个。

patchwork[84]包应该是最赞的一个排版包了,这个包排版自定义程度很高,能满足各种排版需要。还有一些包排版也不错,比如说cowplot[85]、Rmisc[86]、ggpubr[87]

7. 机器学习

机器学习一些常用的包有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]

8. RMarkdown与Shiny

R Markdown为数据科学提供了一种统一的写作框架,可以集成代码、输出结果和文本注释。R Markdown文档是完全可重用的,并支持多种输出形式,包括PDF、Word、幻灯片等。

R Markdown常见的学习资料包括R Markdown速查表、R Markdown用户指南,在RStudio中可以找到。

【万字长文】R语言入门学习路线与资源汇总_第16张图片

除了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/


往期精品(点击图片直达文字对应教程)

【万字长文】R语言入门学习路线与资源汇总_第17张图片

【万字长文】R语言入门学习路线与资源汇总_第18张图片

【万字长文】R语言入门学习路线与资源汇总_第19张图片

【万字长文】R语言入门学习路线与资源汇总_第20张图片

【万字长文】R语言入门学习路线与资源汇总_第21张图片

【万字长文】R语言入门学习路线与资源汇总_第22张图片

【万字长文】R语言入门学习路线与资源汇总_第23张图片

【万字长文】R语言入门学习路线与资源汇总_第24张图片

【万字长文】R语言入门学习路线与资源汇总_第25张图片

【万字长文】R语言入门学习路线与资源汇总_第26张图片

【万字长文】R语言入门学习路线与资源汇总_第27张图片

【万字长文】R语言入门学习路线与资源汇总_第28张图片

【万字长文】R语言入门学习路线与资源汇总_第29张图片

【万字长文】R语言入门学习路线与资源汇总_第30张图片

【万字长文】R语言入门学习路线与资源汇总_第31张图片

【万字长文】R语言入门学习路线与资源汇总_第32张图片

【万字长文】R语言入门学习路线与资源汇总_第33张图片

【万字长文】R语言入门学习路线与资源汇总_第34张图片

【万字长文】R语言入门学习路线与资源汇总_第35张图片

【万字长文】R语言入门学习路线与资源汇总_第36张图片

【万字长文】R语言入门学习路线与资源汇总_第37张图片

【万字长文】R语言入门学习路线与资源汇总_第38张图片

【万字长文】R语言入门学习路线与资源汇总_第39张图片

【万字长文】R语言入门学习路线与资源汇总_第40张图片

【万字长文】R语言入门学习路线与资源汇总_第41张图片

【万字长文】R语言入门学习路线与资源汇总_第42张图片

【万字长文】R语言入门学习路线与资源汇总_第43张图片

【万字长文】R语言入门学习路线与资源汇总_第44张图片

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

【万字长文】R语言入门学习路线与资源汇总_第45张图片

【万字长文】R语言入门学习路线与资源汇总_第46张图片

【万字长文】R语言入门学习路线与资源汇总_第47张图片

你可能感兴趣的:(可视化,数据库,编程语言,人工智能,大数据)