编辑推荐
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的相关特性及其在数据处理和分析方面的应用,极大地提升自己的专业技能。
作者简介
任坤,在量化交易中使用R以及C 和C#已有近4年的时间,他一直致力于开发有用的但社区尚未提供的R包(每天工作8~10小时)。他为其他作者开发的扩展包做出过很多贡献,指出其中存在的问题并给出改进建议。他也是中国R语言大会的重要嘉宾,在R 会议上做过多次演讲。在众多社交媒体中,任坤也受到了广泛关注。此外,他对很多项目都做出了很大贡献,从其GitHub账户可见一斑:https://github.com/renkun-kenhttps://cn.linkedin.com/in/kun-ren-76027530https://renkun.mehttps://renkun.me/formattablehttps://renkun.me/pipeRhttps://renkun.me/rlist
目录
- 第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 RStudio7
- 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:ifelse100
- 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 lapply147
- 5.6.2 sapply148
- 5.6.3 vapply149
- 5.6.4 mapply150
- 5.6.5 apply151
- 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 R6314
- 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 使用Redis362
- 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.table399
- 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支持的R447
- 13.3.5 使用并行计算447
- 13.3.6 使用Rcpp457
- 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 了解markdown491
- 15.1.2 将R整合到markdown中497
- 15.1.3 嵌入表格和图表499
- 15.2 创建交互式应用程序506
- 15.2.1 创建shiny应用程序507
- 15.2.2 使用shinydashboard511
- 15.3 小结515
- 附录 术语表516