R 语言是从事数据科学和统计学需要的工具之一。强大且复杂的 R 对于初学者和不熟悉其独特特性的人来说可能具有一定的挑战性。本书以一种简单且实践性强的方式来教授读者学习R语言,并逐步建立对R语言广泛、一致的理解。通过实际操作实例,亲身体验强大的 R 工具,并总结 R 的使用方法,你能够更深入地了解如何使用数据。通过学习本书,你将掌握 R 的数据结构和相应的数据处理技术,以及可以提高工作效率的流行的 R 扩展包。 我们从 R 的基础开始讲起,然后深入学习编程技术和范例,以便帮助你编写出高品质的 R 代码。更进一步,在学习如何执行一些常见任务(包括数据分析、数据库、网页爬虫、高性能计算和文档编辑)时,我们将快速、深入地了解 R 的行为。学完本书之后,你将成为一名擅长使用正确技术解决问题的、自信的 R 程序员。 通过阅读本书,你将能够: -探索 R 的基本功能,熟悉常用的数据结构; -在R中,使用统计学、数据挖掘和可视化、根查找和zui优化的基本函数来处理数据; -了解 R 的计算模式、环境和元编程技术; -掌握 R 中的面向对象编程; -访问 SQLite 等关系型数据库和MongoDB 等非关系型数据库; -了解 Rcpp 等高性能计算技术; -使用网页爬虫技术提取信息; -创建 R Markdown,使用 Shiny 创建交互式应用程序,使用DiagramR或者ggvis扩展包创建交互式图表等。
R 是一个开源、跨平台的科学计算和统计分析软件包,它提供了丰富多样的统计功能和强大的数据分析功能。随着数据科学的快速发展,R已经成为数据分析领域非常流行的语言。 本书通过15章内容,向读者全面讲解了R的基础知识和编程技巧。本书不仅介绍了R的安装、基本对象、工作空间管理、基本表达式、基本对象操作、字符串的使用等基础内容,还对数据处理、R的内部机制、元编程、面向对象编程、数据库操作、数据操作进行了讲解,同时也涉及高性能计算、网页爬虫和效率提升等重要主题。 本书面向数据领域的从业人员,尤其适合想要通过学习R编程及相关工具提升数据处理效率的读者阅读,也适合计算机或统计相关专业的学生参考使用。通过阅读本书,读者将全面掌握R的相关特性及其在数据处理和分析方面的应用,极大地提升自己的专业技能。
目录
- 第1章 快速入门 1
- 1.1 R简介 1
- 1.1.1 编程语言 2
- 1.1.2 计算环境 2
- 1.1.3 社区 2
- 1.1.4 生态系统 3
- 1.2 对R的需求 3
- 1.3 R的安装 5
- 1.4 RStudio 7
- 1.4.1 RStudio的用户界面 8
- 1.4.2 RStudio服务器 13
- 1.5 入门示例 13
- 1.6 小结 15
- 第2章 基本对象 16
- 2.1 向量 17
- 2.1.1 数值向量 17
- 2.1.2 逻辑向量 19
- 2.1.3 字符向量 20
- 2.1.4 构建向量子集 21
- 2.1.5 命名向量 24
- 2.1.6 提取向量元素 26
- 2.1.7 识别向量类型 27
- 2.1.8 转换向量类型 27
- 2.1.9 数值向量的算术运算符 29
- 2.2 矩阵 30
- 2.2.1 创建一个矩阵 30
- 2.2.2 为行和列命名 31
- 2.2.3 构建矩阵子集 31
- 2.2.4 矩阵运算符的使用 33
- 2.3 数组 34
- 2.3.1 创建一个数组 35
- 2.3.2 构建数组子集 36
- 2.4 列表 37
- 2.4.1 创建一个列表 37
- 2.4.2 从列表中提取元素 38
- 2.4.3 构建列表子集 39
- 2.4.4 命名列表 40
- 2.4.5 赋值 40
- 2.4.6 其他函数 42
- 2.5 数据框 43
- 2.5.1 创建一个数据框 43
- 2.5.2 对行和列命名 44
- 2.5.3 构建数据框子集 45
- 2.5.4 赋值 49
- 2.5.5 因子 50
- 2.5.6 数据框中的实用函数 52
- 2.5.7 在硬盘上读写数据 53
- 2.6 函数 54
- 2.6.1 创建函数 54
- 2.6.2 调用函数 55
- 2.6.3 动态类型 55
- 2.6.4 泛化函数 56
- 2.6.5 函数参数的默认值 58
- 2.7 小结 59
- 第3章 工作空间管理 60
- 3.1 R的工作目录 60
- 3.1.1 在RStudio中创建R
- 项目 61
- 3.1.2 绝对路径和相对路径的
- 比较 62
- 3.1.3 管理项目文件 63
- 3.2 检查工作环境 64
- 3.2.1 检查现有符号 65
- 3.2.2 查看对象结构 66
- 3.2.3 删除符号 69
- 3.3 修改全局选项 70
- 3.3.1 修改输出位数 70
- 3.3.2 修改警告级别 72
- 3.4 管理扩展包库 73
- 3.4.1 认识扩展包 74
- 3.4.2 从CRAN中安装包 75
- 3.4.3 从CRAN中更新包 76
- 3.4.4 从在线库中安装包 76
- 3.4.5 使用包中的函数 77
- 3.4.6 屏蔽和同名冲突 81
- 3.4.7 检查是否已安装扩展包 82
- 3.5 小结 83
- 第4章 基本表达式 84
- 4.1 赋值表达式 84
- 4.1.1 其他赋值操作符 85
- 4.1.2 使用带反引号的非标准
- 名称 88
- 4.2 条件表达式 91
- 4.2.1 使用if语句 91
- 4.2.2 使用if表达式 95
- 4.2.3 在if条件句中使用向量 98
- 4.2.4 使用向量化的
- if:ifelse 100
- 4.2.5 使用switch对值进行
- 分支 101
- 4.3 循环表达式 102
- 4.3.1 使用for循环 103
- 4.3.2 使用while循环 109
- 4.4 小结 110
- 第5章 基本对象操作 111
- 5.1 使用原函数 111
- 5.1.1 检查对象类型 112
- 5.1.2 识别数据维度 116
- 5.2 使用逻辑函数 120
- 5.2.1 逻辑运算符 120
- 5.2.2 逻辑函数 122
- 5.2.3 处理缺失值 125
- 5.2.4 逻辑强制转换 127
- 5.3 使用数学函数 127
- 5.3.1 基础函数 127
- 5.3.2 取整函数 129
- 5.3.3 三角函数 129
- 5.3.4 双曲函数 130
- 5.3.5 最值函数 131
- 5.4 应用数值方法 134
- 5.4.1 根查找 134
- 5.4.2 微积分 137
- 5.5 使用统计函数 139
- 5.5.1 从向量中抽样 139
- 5.5.2 应用随机分布 140
- 5.5.3 计算描述性统计量 142
- 5.6 使用apply函数族 146
- 5.6.1 lapply 147
- 5.6.2 sapply 148
- 5.6.3 vapply 149
- 5.6.4 mapply 150
- 5.6.5 apply 151
- 5.7 小结 152
- 第6章 字符串的使用 153
- 6.1 字符串入门 153
- 6.1.1 打印文本 153
- 6.1.2 连接字符串 157
- 6.1.3 转换文本 158
- 6.1.4 格式化文本 163
- 6.2 格式化日期/时间 165
- 6.2.1 将文本解析为日期/
- 时间 166
- 6.2.2 格式化日期/时间为
- 字符串 169
- 6.3 使用正则表达式 171
- 6.3.1 寻找字符串模式 172
- 6.3.2 使用分组提取数据 174
- 6.3.3 以自定义的方式读取
- 数据 176
- 6.4 小结 177
- 第7章 数据处理 178
- 7.1 读写数据 178
- 7.1.1 读写文件中的文本格式
- 数据 178
- 7.1.2 读写Excel工作表 183
- 7.1.3 读写原生数据文件 185
- 7.1.4 加载内置数据集 188
- 7.2 数据可视化 191
- 7.2.1 创建散点图 191
- 7.2.2 创建折线图 197
- 7.2.3 创建柱状图 201
- 7.2.4 创建饼状图 203
- 7.2.5 创建直方图和密度图 203
- 7.2.6 创建箱线图 206
- 7.3 数据分析 207
- 7.3.1 拟合线性模型 207
- 7.3.2 拟合回归树 212
- 7.4 小结 215
- 第8章 R的内部机制 216
- 8.1 惰性求值 216
- 8.2 复制—修改机制 221
- 8.3 词法作用域 227
- 8.4 环境的工作方式 232
- 8.4.1 环境对象 232
- 8.4.2 创建并链接环境 233
- 8.4.3 链接环境 235
- 8.4.4 与函数相关的环境 240
- 8.5 小结 243
- 第9章 元编程 244
- 9.1 函数式编程 244
- 9.1.1 创建和使用闭包 244
- 9.1.2 使用高阶函数 249
- 9.2 基于语言的计算 255
- 9.2.1 捕获和修改表达式 256
- 9.2.2 执行表达式 263
- 9.2.3 非标准计算 267
- 9.3 小结 273
- 第10章 面向对象编程 274
- 10.1 面向对象编程简介 274
- 10.1.1 类和方法 275
- 10.1.2 继承 275
- 10.2 S3对象 276
- 10.2.1 泛型函数和方法分派 276
- 10.2.2 内置类和方法 279
- 10.2.3 为现有类定义泛型
- 函数 287
- 10.2.4 定义新类并创建对象 288
- 10.3 S4对象系统 300
- 10.3.1 定义S4类 300
- 10.3.2 S4继承 306
- 10.3.3 定义S4泛型函数 307
- 10.3.4 多重分派 309
- 10.4 引用类(RC) 312
- 10.5 R6 314
- 10.6 小结 317
- 第11章 数据库操作 319
- 11.1 操作关系型数据库 319
- 11.1.1 创建一个SQLite
- 数据库 320
- 11.1.2 访问表和表中字段 323
- 11.1.3 用SQL对关系型数据库
- 进行查询 325
- 11.1.4 分块提取查询结果 335
- 11.1.5 出于一致性考虑的事务
- 操作 336
- 11.1.6 将多个文件的数据存入
- 一个数据库 342
- 11.2 操作非关系型数据库 345
- 11.2.1 MongoDB操作 346
- 11.2.2 使用Redis 362
- 11.3 小结 368
- 第12章 数据操作 369
- 12.1 使用内置函数操作数据框 369
- 12.1.1 使用内置函数操作
- 数据框 370
- 12.1.2 使用reshape2重塑
- 数据框 378
- 12.2 通过sqldf包使用SQL查询
- 数据框 383
- 12.3 使用data.table包操作数据 387
- 12.3.1 使用键获取行 394
- 12.3.2 对数据分组汇总 396
- 12.3.3 重塑data.table 399
- 12.3.4 使用原地设置函数 401
- 12.3.5 data.table中的动态
- 作用域 403
- 12.4 使用dplyr管道操作处理
- 数据框 408
- 12.5 使用rlist包处理嵌套数据
- 结构 416
- 12.6 小结 421
- 第13章 高性能计算 423
- 13.1 理解代码性能问题 423
- 13.2 代码的性能分析 432
- 13.2.1 用Rprof进行性能
- 分析 432
- 13.2.2 用profvis进行性能
- 分析 436
- 13.2.3 理解代码为什么
- 会慢 438
- 13.3 提高代码性能 440
- 13.3.1 使用内置函数 440
- 13.3.2 使用向量化 443
- 13.3.3 使用字节码编译器 445
- 13.3.4 使用由Intel MKL
- 支持的R 447
- 13.3.5 使用并行计算 447
- 13.3.6 使用Rcpp 457
- 13.4 小结 465
- 第14章 网页爬虫 467
- 14.1 查阅网页内容 467
- 14.2 使用CSS选择器从网页中
- 提取数据 473
- 14.3 使用XPath选择器 476
- 14.4 分析HTML代码并提取
- 数据 481
- 14.5 小结 489
- 第15章 效率提升 491
- 15.1 编写R Markdown文档 491
- 15.1.1 了解markdown 491
- 15.1.2 将R整合到
- markdown中 497
- 15.1.3 嵌入表格和图表 499
- 15.2 创建交互式应用程序 506
- 15.2.1 创建shiny应用程序 507
- 15.2.2 使用shinydashboard 511
- 15.3 小结 515
- 附录 术语表 516