编辑推荐
实用性强、容易上手的大量示例,教你如何把所学的知识应用于实践。
问答和练习帮助你测试知识的掌握程度,并扩展你的编程技能。
通过阅读《R语言入门经典》,读者可以掌握有助于解决大部分真实的数据分析问题的R基础知识和实用编程技巧。你将掌握整个数据分析流程,学会创建高效、可复用且适合与他人共享的代码。
《R语言入门经典》采用直观、循序渐进的方法进行讲解,旨在帮助读者掌握如何使用R语言进行数据的导入、导出、操控、汇总、建模和绘制。《R语言入门经典》还提供了设计代码的思路,以及如何使用当前的*佳实践来构建强大的R包。
《R语言入门经典》内容:
安装、配置和探索R语言的环境,包括RStudio;
使用基本的R语法、对象和包;
创建和管理数据结构,包括向量、矩阵和数组;
理解列表和数据框;
处理日期、时间和因子;
使用常见的R函数,并学会如何编写自己的函数;
导入和导出数据,连接数据库和电子表格;
使用流行的tidyr、dplyr和data.table包;
通过性能分析、向量化和初始化编写更高效的R代码;
绘制数据,用ggplot2和Lattice图形系统扩展绘图功能;
开发普通类型的模型;
构建高质量的包;
编写R类:S3、S4和引用类;
用R生成动态报告;
用Shiny创建Web应用程序。内容简介
《R语言入门经典》作为R语言的学习指南,详细讲解了R语言的基本概念和编程技巧。《R语言入门经典》从*基础的知识开始,由浅入深地介绍R的基本概念和重要特性,并用大量的示例和图形进行演示和说明,旨在让读者在掌握R语言的同时,能养成良好的编程习惯,写出专业、高效的代码。
《R语言入门经典》共24章,其内容涵盖了R语言的社区和环境介绍;R语言的各种数据结构(单模式/多模式数据结构,日期、时间和因子);包括各种常用函数、实用函数和应用函数在内的R语言函数;如何在R中进行文本的导入和导出,如何操控和转换数据,以及在R中高效处理数据的方法;如何可视化数据(涵盖了三个基本图形系统、ggplot2图形系统和Lattice图形系统);如何用R构建线性模型、广义线性模型和非线性模型,以及面向对象的思想;如何进行R代码提速(包括代码的性能分析和提速方法);如何构建R包和扩展R包;如何编写R类,其中会涉及R中的面向对象编程系统(S3、S4、引用类等);如何创建动态报告和如何用Shiny创建网络应用程序。《R语言入门经典》附录还介绍了R、Rtools和RStudio的具体安装步骤。
《R语言入门经典》涵盖了R语言的所有基础知识,介绍了许多实用的编程技巧,既可作为R语言的入门教材,也可作为一本为寻求拓宽分析工具的专业统计学家、数据科学家、分析师量身打造的学习宝典。《R语言入门经典》还可作为对R语言感兴趣的读者和开发人员的参考书籍。作者简介
AndyNicholls在英国斯巴大学获得数学硕士学位,在南安普顿大学获得统计学应用科学硕士学位。Andy在2011年加入MangoSolution公司之前一直是一位制药行业的资深统计学家。自从加入MangoSolution后,Andy举办了50多次R语言的现场培训课程,参与了30多个R包的开发。现在,他负责管理MangoSolution的R顾问团队,并一直定期为每季度的LondonR活动做贡献。到目前为止,该活动的R用户组参与人数居英国之首,有1000多个见面会成员。Andy与他美丽贤惠的妻子和可爱的儿子居住在英国的历史名城巴斯附近。
RichardPugh在巴斯大学获得数学学位。Richard在制药行业作为统计学家从事统计相关工作多年,后来加入了Insightful公司(开发了S-PLUS)的售前顾问团队。Richard在Insightful公司的工作包括举办各种活动,给许多行业的蓝筹客户提供相关的培训和咨询服务。Richard在2002年作为联合创始人创建了MangoSolution,领导公司中R和其他分析软件的各种项目开发和技术研发。Richard现在是Mango公司的首席数据科学家,定期在数据科学会议和R活动中发言。Richard与他的妻子和两个孩子居住在英国威尔特郡西部的BradfordonAvon镇,大部分“业余时间”都在修整自己的房子。
AimeeGott是兰卡斯特大学的统计学博士,在本校获得了本科和硕士学位。作为培训领导,Aimee为Mango公司举办了200多天的培训。她在欧洲和美国举办了多次全面介绍R语言的现场培训,而且还包括许多短期研讨会和在线研讨会。Aimee负责监督Mango公司跨数据科学领域方面的培训课程开发,并定期参加R用户组和见面会。在业余时里,Aimee喜欢学习各种欧洲语言,并用摄影记录她的旅行。目录
第1章 R语言社区1
1.1R语言简史1
1.1.1S语言的诞生1
1.1.2R语言的诞生2
1.2R语言社区3
1.2.1邮件列表3
1.2.2R语言手册4
1.2.3在线资源4
1.2.4R语言联盟4
1.2.5用户活动5
1.3R语言的开发5
1.4本章小结6
1.5本章答疑6
1.6课后研习7
1.7补充练习7
*2章 R语言环境8
2.1集成开发环境8
2.1.1RGUI8
2.1.2RStudioIDE9
2.1.3其他开发环境10
2.2R语法10
2.2.1控制台10
2.2.2脚本11
2.3R对象12
2.3.1R包12
2.3.2搜索路径12
2.3.3列出对象13
2.3.4R的工作空间14
2.4使用R包16
2.4.1查找合适的包17
2.4.2安装R包17
2.4.3载入R包19
2.5内部帮助20
2.6本章小结21
2.7本章答疑21
2.8课后研习22
2.9补充练习23
第3章 单模式数据结构24
3.1R的数据类型24
3.2向量、矩阵和数组25
3.3向量25
3.3.1创建向量26
3.3.2向量属性30
3.3.3索引向量32
3.4矩阵36
3.4.1创建矩阵37
3.4.2矩阵属性39
3.4.3索引矩阵41
3.5数组44
3.5.1创建数组44
3.5.2数组属性45
3.5.3索引数组45
3.6单模式数据对象之间的关系46
3.7本章小结47
3.8本章答疑47
3.9课后研习48
3.10补充练习49
第4章 多模式数据结构50
4.1多模式结构50
4.2列表51
4.2.1列表是什么51
4.2.2创建空列表52
4.2.3创建非空列表52
4.2.4创建有元素名的列表53
4.2.5创建列表:总结53
4.2.6列表属性54
4.2.7索引列表55
4.2.8索引列表的子集55
4.2.9引用列表的元素58
4.2.10添加列表元素60
4.2.11列表语法总结61
4.2.12为何要学习列表63
4.3数据框66
4.3.1创建数据框66
4.3.2查询数据框的属性67
4.3.3选取数据框的列67
4.3.4添加数据框的列67
4.3.5索引数据框的列68
4.3.6作为矩阵引用69
4.3.7索引数据框总结71
4.4探索数据71
4.4.1数据的顶部和底部72
4.4.2数据视图72
4.4.3汇总数据74
4.4.4可视化数据74
4.5本章小结75
4.6本章答疑75
4.7课后研习77
4.8补充练习78
第5章 日期、时间和因子80
5.1处理日期和时间80
5.1.1创建日期对象80
5.1.2创建包含时间的对象81
5.1.3操控日期和时间82
5.2lubridate包83
5.3处理分类数据84
5.3.1创建因子84
5.3.2管理因子的水平86
5.3.3创建连续数据的因子86
5.4本章小结87
5.5本章答疑88
5.6课后研习88
5.7补充练习89
第6章 常用R函数90
6.1R函数的用法90
6.2处理数值数据的函数91
6.2.1数学函数和运算符91
6.2.2统计汇总函数92
6.2.3模拟和统计分布93
6.3处理逻辑数据的函数94
6.4处理缺失数据的函数95
6.5处理字符数据的函数96
6.5.1处理简单的字符96
6.5.2查找和替换97
6.6本章小结98
6.7本章答疑98
6.8课后研习98
6.9补充练习99
第7章 编写函数:*一部分100
7.1为何要学习函数100
7.2创建简单的函数101
7.2.1命名函数102
7.2.2定义函数的参数103
7.2.3函数作用域规则104
7.2.4返回对象104
7.3If/Else结构106
7.3.1一个简单的R示例107
7.3.2嵌套语句108
7.3.3使用一个条件108
7.3.4多个测试值109
7.3.5汇总成一个逻辑值109
7.3.6简化逻辑输入110
7.3.7反转逻辑值111
7.3.8混合条件112
7.3.9控制与/或语句112
7.3.10提前返回113
7.3.11示例114
7.4本章小结115
7.5本章答疑115
7.6课后研习116
7.7补充练习117
第8章 编写函数:*二部分119
8.1错误和警告119
8.1.1错误消息120
8.1.2警告消息121
8.2检查输入122
8.3省略号124
8.3.1使用省略号125
8.3.2用省略号传递图形参数125
8.4检查多值输入128
8.5使用输入定义130
8.6本章小结133
8.7本章答疑133
8.8课后研习134
8.9补充练习135
第9章 循环和汇总136
9.1重复的任务136
9.1.1循环136
9.1.2for循环137
9.1.3while循环142
9.2“应用”函数家族143
9.3apply()函数144
9.3.1MARGIN144
9.3.2简单的apply()用例145
9.3.3使用多个MARGIN146
9.3.4更高维结构使用apply()147
9.3.5给“待应用”函数传递
其他参数148
9.3.6在自定义函数中使用apply()150
9.3.7给函数传递额外参数151
9.3.8应用于数据框152
9.4lapply()函数153
9.4.1split()函数154
9.4.2分割数据框155
9.4.3用lapply()函数处理向量157
9.4.4“应用”输入的次序158
9.4.5用lapply()函数处理数据框160
9.5sapply()函数161
9.5.1从sapply()返回162
9.5.2为何要使用sapply()164
9.6tapply()函数165
9.6.1多个分组变量165
9.6.2多值返回166
9.6.3从tapply()返回值168
9.7本章小结169
9.8本章答疑169
9.9课后研习170
9.10补充练习171
*10章 导入和导出172
10.1处理文本文件172
10.1.1读入文本文件173
10.1.2读入CSV文件174
10.1.3导出文本文件175
10.1.4更快导入和导出175
10.1.5高效数据存储175
10.1.6所有权和其他格式176
10.2关系数据库177
10.2.1RODBC177
10.2.2DBI178
10.3操作MicrosoftExcel179
10.4本章小结183
10.5本章答疑183
10.6课后研习184
10.7补充练习184
*11章 数据操控和转换186
11.1排序186
11.1.1数据框排序187
11.1.2降序排列187
11.2附加188
11.3合并188
11.3.1合并示例189
11.3.2缺失值190
11.4重复值191
11.5重组192
11.5.1用reshape进行重组192
11.5.2融合193
11.5.3重铸194
11.5.4用tidyr进行重组195
11.6数据整合197
11.6.1使用“for”循环197
11.6.2使用“应用”函数198
11.6.3aggregate()函数199
11.6.4使用带公式的aggregate()199
11.6.5根据指定列使用aggregate()201
11.6.6计算baseline的差值203
11.7本章小结204
11.8本章答疑204
11.9课后研习205
11.10补充练习205
*12章 高效数据处理206
12.1dplyr:处理数据的新方式206
12.1.1创建dplyr(tbl_df)对象207
12.1.2排序208
12.1.3访问子集208
12.1.4添加新列210
12.1.5合并211
12.1.6整合212
12.1.7管道操作符215
12.2用data.table高效处理数据216
12.2.1创建data.table216
12.2.2设置key217
12.2.3取子集217
12.2.4添加新行和新列219
12.2.5合并221
12.2.6整合222
12.2.7处理超大数据集的其他包223
12.3本章小结224
12.4本章答疑224
12.5课后研习224
12.6补充练习225
*13章 图形226
13.1图形设备和颜色226
13.1.1设备226
13.1.2颜色227
13.2高级图形函数227
13.2.1单变量图形函数228
13.2.2plot()函数230
13.2.3图形属性231
13.3初级图形函数235
13.3.1点和线235
13.3.2文本236
13.3.3图例237
13.3.4其他初级函数239
13.4图形参数239
13.5控制布局240
13.5.1网格布局240
13.5.2layout()函数241
13.6本章小结242
13.7本章答疑242
13.8课后研习243
13.9补充练习244
*14章 ggplot2图形包245
14.1ggplot2的哲学245
14.2快速绘图和基本控制246
14.2.1使用qplot()246
14.2.2标题和轴247
14.2.3使用图层247
14.2.4把图形作为对象248
14.3更改绘制类型249
14.3.1绘制类型249
14.3.2组合绘制类型251
14.4图形属性251
14.4.1控制图形属性252
14.4.2标度和图例254
14.4.3处理分组数据256
14.5面板(分面)257
14.5.1facet_grid()的用法258
14.5.2facet_wrap()的用法259
14.5.3从qplot()中进行分面260
14.6定制绘图260
14.6.1ggplot()260
14.6.2坐标系264
14.7主题和布局265
14.7.1调整单个绘图265
14.7.2全局主题266
14.7.3图例布局266
14.8ggvis的演变267
14.9本章小结267
14.10本章答疑268
14.11课后研习268
14.12补充练习269
*15章 lattice图形270
15.1格子图形的历史270
15.2lattice包271
15.3创建简单的lattice图形271
15.3.1lattice图形类型272
15.3.2绘制数据的子集277
15.4图形选项278
15.4.1标题和轴278
15.4.2绘制类型和格式279
15.5多变量280
15.6数据的分组281
15.7使用面板282
15.7.1控制条头283
15.7.2多个“By”变量284
15.7.3面板函数285
15.8控制样式290
15.8.1预览样式291
15.8.2创建主题292
15.8.3使用主题293
15.9本章小结294
15.10本章答疑294
15.11课后研习295
15.12补充练习295
*16章 R模型和面向对象296
16.1R中的统计模型296
16.2简单的线性模型296
16.3在R中评估模型298
16.3.1模型汇总298
16.3.2模型诊断图299
16.3.3提取模型元素300
16.3.4作为列表对象的模型302
16.3.5在绘图中添加模型线304
16.3.6模型预测305
16.4多元线性回归306
16.4.1更新模型306
16.4.2比较嵌套模型307
16.5交互项309
16.6因子自变量311
16.7变量转换314
16.8R和面向对象316
16.8.1面向对象316
16.8.2线性模型方法317
16.9本章小结318
16.10本章答疑318
16.11课后研习319
16.12补充练习319
*17章 常见R模型320
17.1广义线性模型320
17.1.1GLM定义321
17.1.2拟合GLM模型321
17.1.3拟合高斯模型322
17.1.4glm对象323
17.1.5Logistic回归325
17.1.6泊松回归327
17.1.7GLM扩展329
17.2非线性模型329
17.2.1非线性回归330
17.2.2非线性模型扩展335
17.3生存分析336
17.3.1ovarian数据框336
17.3.2删失数据336
17.3.3估计生存函数337
17.3.4比例风险341
17.3.5生存模型扩展344
17.4时间序列分析344
17.4.1时间序列对象344
17.4.2分解时间序列346
17.4.3平滑347
17.4.4自相关349
17.4.5拟合ARIMA模型349
17.5本章小结352
17.6本章答疑352
17.7课后研习352
17.8补充练习353
*18章 代码提速354
18.1确定效率354
18.1.1性能分析355
18.1.2标准分析工具355
18.2初始化356
18.3向量化357
18.3.1什么是向量化358
18.3.2怎样编码可以向量化358
18.4使用替换函数360
18.5管理内存使用360
18.6集成C++361
18.6.1C++和Rcpp的使用时机361
18.6.2基本函数362
18.6.3在C++中使用R函数364
18.7本章小结364
18.8本章答疑365
18.9课后研习365
18.10补充练习366
*19章 构建包367
19.1为什么要构建R包367
19.2R包的结构368
19.2.1创建包的结构368
19.2.2DESCRIPTION文件369
19.2.3NAMESPACE文件370
19.2.4R目录370
19.2.5man目录371
19.3代码质量371
19.4用roxygen2自动创建文档372
19.4.1函数的roxygen注释块372
19.4.2撰写包的文档374
19.4.3创建和更新帮助页面374
19.5用devtools构建包375
19.5.1检查375
19.5.2构建377
19.5.3安装377
19.6本章小结378
19.7本章答疑378
19.8课后研习378
19.9补充练习379
*20章 构建高级包380
20.1扩展R包380
20.2开发测试框架381
20.2.1testthat介绍381
20.2.2将测试合并进包中383
20.3在包中包含数据384
20.4包含用户指南386
20.4.1在包中包含使用指南386
20.4.2撰写使用指南387
20.5用Rcpp编码389
20.6本章小结390
20.7本章答疑390
20.8课后研习391
20.9补充练习391
*21章 编写R类393
21.1什么是类393
21.1.1R中的面向对象394
21.1.2为何要用面向对象394
21.1.3为何要使用S3396
21.2创建新的S3类396
21.3泛型函数和方法398
21.3.1为算术操作符定义方法399
21.3.2列表和属性400
21.3.3创建新的泛型401
21.4在S3中继承402
21.5创建S3文档403
21.6S3的局限性403
21.7本章小结404
21.8本章答疑404
21.9课后研习404
21.10补充练习405
*22章 正式的类系统406
22.1S4406
22.1.1使用S4类407
22.1.2定义S4类407
22.1.3方法410
22.1.4定义新的泛型函数411
22.1.5多重分派412
22.1.6继承413
22.1.7创建S4的文档414
22.2引用类415
22.2.1创建新的引用类415
22.2.2定义方法417
22.2.3复制引用类的对象419
22.2.4创建引用类的文档420
22.3R6类421
22.3.1公有成员和私有成员421
22.3.2R6示例421
22.4其他类系统422
22.5本章小结422
22.6本章答疑423
22.7课后研习423
22.8补充练习424
*23章 动态报告425
23.1什么是动态报告425
23.2knitr包简介426
23.3用RMarkdown生成
简单的报告426
23.3.1RMarkdown文档基础426
23.3.2创建HTML文件427
23.3.3包含R的代码和输出428
23.4用LaTeX生成报告430
23.4.1LaTeX文档基础430
23.4.2在LaTeX文档中包含代码431
23.5本章小结433
23.6本章答疑433
23.7课后研习433
23.8补充练习434
*24章 用Shiny创建网络应用程序435
24.1简单的Shiny应用程序435
24.1.1Shiny应用程序的结构435
24.1.2ui组件436
24.1.3server组件437
24.2响应式函数439
24.2.1为何需要响应式函数439
24.2.2创建一个简单的响应式函数440
24.3交互式文档441
24.4共享Shiny应用程序442
24.5本章小结442
24.6本章答疑443
24.7课后研习443
24.8补充练习444
附录A 安装445精彩书摘
《R语言入门经典》:
如果想添加元素(如主标题、轴范围、轴标签),必须用额外的图层才行。从本质上看,这种通过添加图层的方式来绘制图形的方法就是图形语法。
1.aes()函数
对于ggplot2包的新成员,aes()函数是需要重点理解的地方。我在进行R培训时得知,那些使用ggplot2包多年的人仍对这个函数的用法和使用时机一知半解!实际上,只需记住一条规则就行,学会以后用起来非常简单直接。首先,我们来看aes的含义,以及该函数是从哪里来的。
在图形语法中,“图形属性”不仅指点在图形中的外观,而且还涉及点本身。实际上,它涉及点的方方面面。图形语法把绘制类型定义为几何形状或“几何”(geom)”,所谓的点可以是线、箱或条形。图形属性的本质就是一些信息,反映了如何表示数据中的变量(或者用图形语法的术语,如何“映射”数据中的变量)。这些图形属性取决于绘制类型、坐标系、分面和标度等。
……