由于链接总是被和谐,需要本书电子版的朋友关注公众号:myapp定制(账号:myapp147),首页回复数字2010, 自动弹出下载地址.
作者简介
任坤 在量化交易中使用R以及C++和C#已有近4年的时间,他一直致力于开发有用的但社区尚未提供的R包(每天工作8~10小时)。他为其他作者开发的扩展包做出过很多贡献,指出其中存在的问题并给出改进建议。他也是中国R语言大会的重要嘉宾,在R 会议上做过多次演讲。在众多社交媒体中,任坤也受到了广泛关注。
内容提要
R 是一个开源、跨平台的科学计算和统计分析软件包,它提供了丰富多样的统计功能和强大的数据分析功能。随着数据科学的快速发展,R已经成为数据分析领域非常流行的语言。
本书通过15章内容,向读者全面讲解了R的基础知识和编程技巧。本书不仅介绍了R的安装、基本对象、工作空间管理、基本表达式、基本对象操作、字符串的使用等基础内容,还对数据处理、R的内部机制、元编程、面向对象编程、数据库操作、数据操作进行了讲解,同时也涉及高性能计算、网页爬虫和效率提升等重要主题。
本书面向数据领域的从业人员,尤其适合想要通过学习R编程及相关工具提升数据处理效率的读者阅读,也适合计算机或统计相关专业的学生参考使用。通过阅读本书,读者将全面掌握R的相关特性及其在数据处理和分析方面的应用,极大地提升自己的专业技能。
序
我毕业后一直在量化投资的一线工作,每天大量的工作都是以R语言为主要工具来研究金融数据,期间也在GitHub上开发和维护着几个R扩展包,每年也参加几场R语言会议。在这个过程中,我接触了不少还在学校的初学者,或者已经步入数据相关工作的研究人员,也有一些发来邮件寻求帮助的世界各地的用户。我有这样一种感觉,我们的同学、数据研究者经常有丰富的想法,但原始数据的形式与这些想法常常有相当大的距离。许多用户是因为对工具和编程本身不够熟悉而难以自由地操作数据,因而在面对稍显复杂的问题时便止步不前。如果是这样的原因放慢了我们探索数据世界的脚步,岂不是太可惜了?于是,我萌生了一个想法,写一本关于R语言编程的书。2015年10月,Packt出版社的编辑邀请我写一本面向初学者和专业用户的R语言图书,这正合我的想法!经过一年的时间,便有了本书。
本书与其他R语言图书有一个重要的不同:该书更倾向于帮助读者系统化地认识R作为一门编程语言的设计和行为,通过许多例子和实验帮助读者弄清楚R语言中各种常用数据结构的行为,以及所有这些行为背后统一的设计原则和行为准则。对于许多初学者以及其他编程语言的用户来说,R语言是难以预料、充满怪癖的,至少不是十全十美的。但是,当了解到这些统一的行为准则后,你可能会惊叹R语言本身的一致性,以及表达数据和逻辑的灵活性。这些特性允许我们高效地进行数据探索、分析、可视化、报告等。本书将用一半的篇幅来介绍基本的R语言和对象,然后探索R语言的高级特性,让读者更加深入地理解其行为,形成一个整体的知识脉络。此时,当你写出一个R语言表达式,就能立刻猜想会发生什么,即使和想象的不一样,也能很快找到问题所在。打好了这个基础后,我们会介绍数据相关的主要技术,包括关系性与非关系性数据库,实现快速数据操作的扩展包等。掌握了语言和对象的特性以及流行的扩展工具后,我们就可以随时根据问题选择工具,因而生产力就能大幅提升,可以将主要经历投入在思考和解决业务问题,而非一知半解、绞尽脑汁地去找代码中的纰漏且摸不着头脑。最后,本书介绍了一系列工具,涵盖数据研究的多个方面,读者可以根据自己的需要继续学习。
本书原版为英文版,对于国内的读者可能阅读中文版更加方便。为了保证翻译的质量,我推荐厦门大学经济学院和王亚南经济研究院(WISE)的研究生学弟、学妹们翻译本书。他们来自于一个自发组织的数据科学小组WISER Club,经受过严格的学术训练,参与过多种数据研究项目,对R语言相关的应用已经有相当的经验,并且对推广数据科学充满热情。
希望本书能让你更加深入地了解R语言和相关工具,更加自信、自由地探索数据的海洋。
——任坤
目 录
版权信息
版权声明
内容提要
序
作者简介
技术评阅者简介
译者简介
前言
第1章 快速入门 1.1 R简介 1.1.1 编程语言
1.1.2 计算环境
1.1.3 社区
1.1.4 生态系统
1.2 对R的需求
1.3 R的安装
1.4 RStudio 1.4.1 RStudio的用户界面
1.4.2 RStudio服务器
1.5 入门示例
1.6 小结
第2章 基本对象 2.1 向量 2.1.1 数值向量
2.1.2 逻辑向量
2.1.3 字符向量
2.1.4 构建向量子集
2.1.5 命名向量
2.1.6 提取向量元素
2.1.7 识别向量类型
2.1.8 转换向量类型
2.1.9 数值向量的算术运算符
2.2 矩阵 2.2.1 创建一个矩阵
2.2.2 为行和列命名
2.2.3 构建矩阵子集
2.2.4 矩阵运算符的使用
2.3 数组 2.3.1 创建一个数组
2.3.2 构建数组子集
2.4 列表 2.4.1 创建一个列表
2.4.2 从列表中提取元素
2.4.3 构建列表子集
2.4.4 命名列表
2.4.5 赋值
2.4.6 其他函数
2.5 数据框 2.5.1 创建一个数据框
2.5.2 对行和列命名
2.5.3 构建数据框子集
2.5.4 赋值
2.5.5 因子
2.5.6 数据框中的实用函数
2.5.7 在硬盘上读写数据
2.6 函数 2.6.1 创建函数
2.6.2 调用函数
2.6.3 动态类型
2.6.4 泛化函数
2.6.5 函数参数的默认值
2.7 小结
第3章 工作空间管理 3.1 R的工作目录 3.1.1 在RStudio中创建R项目
3.1.2 绝对路径和相对路径的比较
3.1.3 管理项目文件
3.2 检查工作环境 3.2.1 检查现有符号
3.2.2 查看对象结构
3.2.3 删除符号
3.3 修改全局选项 3.3.1 修改输出位数
3.3.2 修改警告级别
3.4 管理扩展包库 3.4.1 认识扩展包
3.4.2 从CRAN中安装包
3.4.3 从CRAN中更新包
3.4.4 从在线库中安装包
3.4.5 使用包中的函数
3.4.6 屏蔽和同名冲突
3.4.7 检查是否已安装扩展包
3.5 小结
第4章 基本表达式 4.1 赋值表达式 4.1.1 其他赋值操作符
4.1.2 使用带反引号的非标准名称
4.2 条件表达式 4.2.1 使用if语句
4.2.2 使用if表达式
4.2.3 在if条件句中使用向量
4.2.4 使用向量化的if:ifelse
4.2.5 使用switch对值进行分支
4.3 循环表达式 4.3.1 使用for循环
4.3.2 使用while循环
4.4 小结
第5章 基本对象操作 5.1 使用原函数 5.1.1 检查对象类型
5.1.2 识别数据维度
5.2 使用逻辑函数 5.2.1 逻辑运算符
5.2.2 逻辑函数
5.2.3 处理缺失值
5.2.4 逻辑强制转换
5.3 使用数学函数 5.3.1 基础函数
5.3.2 取整函数
5.3.3 三角函数
5.3.4 双曲函数
5.3.5 最值函数
5.4 应用数值方法 5.4.1 根查找
5.4.2 微积分
5.5 使用统计函数 5.5.1 从向量中抽样
5.5.2 应用随机分布
5.5.3 计算描述性统计量
5.6 使用apply函数族 5.6.1 lapply
5.6.2 sapply
5.6.3 vapply
5.6.4 mapply
5.6.5 apply
5.7 小结
第6章 字符串的使用 6.1 字符串入门 6.1.1 打印文本
6.1.2 连接字符串
6.1.3 转换文本
6.1.4 格式化文本
在R中使用Python字符串函数
6.2 格式化日期/时间 6.2.1 将文本解析为日期/时间
6.2.2 格式化日期/时间为字符串
6.3 使用正则表达式 6.3.1 寻找字符串模式
6.3.2 使用分组提取数据
6.3.3 以自定义的方式读取数据
6.4 小结
第7章 数据处理 7.1 读写数据 7.1.1 读写文件中的文本格式数据
7.1.2 读写Excel工作表
7.1.3 读写原生数据文件
7.1.4 加载内置数据集
7.2 数据可视化 7.2.1 创建散点图
7.2.2 创建折线图
7.2.3 创建柱状图
7.2.4 创建饼状图
7.2.5 创建直方图和密度图
7.2.6 创建箱线图
7.3 数据分析 7.3.1 拟合线性模型
7.3.2 拟合回归树
7.4 小结
第8章 R的内部机制 8.1 惰性求值
8.2 复制—修改机制 修改函数外部的对象
8.3 词法作用域
8.4 环境的工作方式 8.4.1 环境对象
8.4.2 创建并链接环境
8.4.3 链接环境
8.4.4 与函数相关的环境
8.5 小结
第9章 元编程 9.1 函数式编程 9.1.1 创建和使用闭包
9.1.2 使用高阶函数
9.2 基于语言的计算 9.2.1 捕获和修改表达式
9.2.2 执行表达式
9.2.3 非标准计算
9.3 小结
第10章 面向对象编程 10.1 面向对象编程简介 10.1.1 类和方法
10.1.2 继承
10.2 S3对象 10.2.1 泛型函数和方法分派
10.2.2 内置类和方法
10.2.3 为现有类定义泛型函数
10.2.4 定义新类并创建对象
10.3 S4对象系统 10.3.1 定义S4类
10.3.2 S4继承
10.3.3 定义S4泛型函数
10.3.4 多重分派
10.4 引用类(RC)
10.5 R6
10.6 小结
第11章 数据库操作 11.1 操作关系型数据库 11.1.1 创建一个SQLite数据库
11.1.2 访问表和表中字段
11.1.3 用SQL对关系型数据库进行查询
11.1.4 分块提取查询结果
11.1.5 出于一致性考虑的事务操作
11.1.6 将多个文件的数据存入一个数据库
11.2 操作非关系型数据库 11.2.1 MongoDB操作
11.2.2 使用Redis
11.3 小结
第12章 数据操作 12.1 使用内置函数操作数据框 12.1.1 使用内置函数操作数据框
12.1.2 使用reshape2重塑数据框
12.2 通过sqldf包使用SQL查询数据框
12.3 使用data.table包操作数据 12.3.1 使用键获取行
12.3.2 对数据分组汇总
12.3.3 重塑data.table
12.3.4 使用原地设置函数
12.3.5 data.table中的动态作用域
12.4 使用dplyr管道操作处理数据框
12.5 使用rlist包处理嵌套数据结构
12.6 小结
第13章 高性能计算 13.1 理解代码性能问题 测试代码性能
13.2 代码的性能分析 13.2.1 用Rprof进行性能分析
13.2.2 用profvis进行性能分析
13.2.3 理解代码为什么会慢
13.3 提高代码性能 13.3.1 使用内置函数
13.3.2 使用向量化
13.3.3 使用字节码编译器
13.3.4 使用由Intel MKL支持的R
13.3.5 使用并行计算
13.3.6 使用Rcpp
13.4 小结
第14章 网页爬虫 14.1 查阅网页内容
14.2 使用CSS选择器从网页中提取数据
14.3 使用XPath选择器
14.4 分析HTML代码并提取数据
14.5 小结
第15章 效率提升 15.1 编写R Markdown文档 15.1.1 了解markdown
15.1.2 将R整合到markdown中
15.1.3 嵌入表格和图表
15.2 创建交互式应用程序 15.2.1 创建shiny应用程序
15.2.2 使用shinydashboard
15.3 小结
附录 术语表