第1章R语言社区 1
1.1 R语言简史 1
1.1.1 S语言的诞生 1
1.1.2 R语言的诞生 2
1.2 R语言社区 3
1.2.1邮件列表 3
1.2.2 R语言手册 4
1.2.3在线资源 4
1.2.4 R语言联盟 4
1.2.5用户活动 5
1.3 R语言的开发 5
1.4本章小结 6
1.5本章答疑 6
1.6课后研习 7
1.7补充练习 7
第2章R语言环境 8
2.1集成开发环境 8
2.1.1 R GUI 8
2.1.2 RStudio IDE 9
2.1.3其他开发环境 10
2.2 R语法 10
2.2.1控制台 10
2.2.2脚本 11
2.3 R对象 12
2.3.1 R包 12
2.3.2搜索路径 12
2.3.3列出对象 13
2.3.4 R的工作空间 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.1 R的数据类型 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.2 lubridate包 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.1 R函数的用法 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.3 If/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.2 for循环 137
9.1.3 while循环 142
9.2“应用”函数家族 143
9.3 apply()函数 144
9.3.1 MARGIN 144
9.3.2简单的apply()用例 145
9.3.3使用多个MARGIN 146
9.3.4更高维结构使用apply() 147
9.3.5给“待应用”函数传递其他参数 148
9.3.6在自定义函数中使用apply() 150
9.3.7 给函数传递额外参数 151
9.3.8应用于数据框 152
9.4 lapply()函数 153
9.4.1 split()函数 154
9.4.2分割数据框 155
9.4.3用lapply()函数处理向量 157
9.4.4“应用”输入的次序 158
9.4.5用lapply()函数处理数据框 160
9.5 sapply()函数 161
9.5.1从sapply0返回 162
9.5.2为何要使用sapply() 164
9.6 tapply()函数 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.1 RODBC 177
10.2.2 DBI 178
10.3操作Microsoft Excel 179
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.3 aggregate()函数 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.1 dplyr:处理数据的新方式 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.tabl e高效处理数据 216
12.2.1创建data.table 216
12.2.2设置key 217
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.2 plot()函数 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.2 layout()函数 241
13.6本章小结 242
13.7本章答疑 242
13.8课后研习 243
13.9补充练习 244
第14章ggplot2图形包 245
14.1 ggplot2的哲学 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.1 facet_grid()的用法 258
14.5.2 facet_ wrap()的用法 259
14.5.3从qplot()中进行分面 260
14.6定制绘图 260
14.6.1 ggplot() 260
14.6.2坐标系 264
14.7主题和布局 265
14.7.1调整单个绘图 265
14.7.2全局主题 266
14.7.3图例布局 266
14.8 ggvis的演变 267
14.9本章小结 267
14.10本章答疑 268
14.11课后研习 268
14.12补充练习 269
第15章lattice图形 270
15.1格子图形的历史 270
15.2 lattice包 271
15.3创建简单的lattice图形 271
15.3.1 lattice图形类型 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.1 R中的统计模型 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.8 R和面向对象 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.1 GLM定义 321
17.1.2拟合GLM模型 321
17.1.3拟合高斯模型 322
17.1.4 glm对象 323
17.1.5 Logistic回归 325
17.1.6泊松回归 327
17.1.7 GLM扩展 329
17.2非线性模型 329
17.2.1非线性回归 330
17.2.2非线性模型扩展 335
17.3生存分析 336
17.3.1 ovarian数据框 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.1 C+++和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.2 R包的结构 368
19.2.1创建包的结构 368
19.2.2 DESCRIPTION文件 369
19.2.3 NAMESPACE文件 370
19.2.4R目录 370
19.2.5 man目录 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.1 testthat介绍 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.1 R中的面向对象 394
21.1.2为何要用面向对象 394
21.1.3为何要使用S3 396
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.6 S3的局限性 403
21.7本章小结 404
21.8本章答疑 404
21.9课后研习 404
21.10补充练习 405
第22章 正式的类系统 406
22.1 S4 406
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.3 R6类 421
22.3.1公有成员和私有成员 421
22.3.2 R6示例 421
22.4其他类系统 422
22.5本章小结 422
22.6本章答疑 423
22.7课后研习 423
22.8补充练习 424
第23章 动态报告 425
23.1什么是动态报告 425
23.2 knitr包简介 426
23.3用RMarkdown生成简单的报告 426
23.3.1 RMarkdown文档基础 426
23.3.2创建HTML文件 427
23.3.3包含R的代码和输出 428
23.4用LaTeX生成报告 430
23.4.1 LaTeX文档基础 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.1 Shiny应用程序的结构 435
24.1.2 ui组件 436
24.1.3 server组件 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