万本电子书0元读

万本电子书0元读

顶部广告

R语言编程艺术电子书 租阅

  R是一种用于统计计算与做图的源软件,同时也是一种编程语言,它广泛应用于企业和学术界的数据分析领域,正在成为*通用的语言之一。由于近几年数据挖掘、大数据等概念的走红,R也越来越多地被人关注。截至本文完成之日,CRAN(http://cran.r-project.org/)上共有4383个包,涉及统计、化学、经济、生物、医学、心理、社会学等各个学科。不同类型的公司,比如Google、辉瑞、默克、美国银行、洲际酒店集团和壳牌公司都在使用它,同时以S语言环境为基础的R语言由于其鲜明的特色,一出现就受到了统计专业人士的青睐,成为国外大学里相当标准的统计软件。

售       价:¥

纸质售价:¥54.50购买纸书

681人正在读 | 2人评论 6.2

作       者:(美)麦特洛夫(Matloff,N.)

出  版  社:机械工业出版社

出版时间:2013-05-01

字       数:18.2万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:此类商品不支持退换货,不支持下载打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(3条)
  • 读书简介
  • 目录
  • 累计评论(3条)
本书是r语言领域公认的经典著作,由著名计算机科学家兼统计学家撰写,amazon五星级畅销书。它是一本面向r语言开发者的纯编程类书籍,不需要读者具备统计学基础,从编程角度而非统计学角度系统讲解了r语言的数据结构、编程结构、语法、tcp/ip网络编程、并行计算、代码调试、程序性能优化、编程技巧以及r语言与其他语言的接口等所有与r编程相关的知识,几乎面面俱到。本书的实用性也非常强,44个精选的扩展案例,充分展示了r语言在数据处理和统计分析方面的强大能力。 本书是r语言领域公认的经典著作,由著名计算机科学家兼统计学家撰写,amazon五星级畅销书。它是一本面向r语言发者的纯编程类书籍,不需要读者具备统计学基础,从编程角度而非统计学角度系统讲解了r语言的数据结构、编程结构、语法、tcp/ip网络编程、并行计算、代码调试、程序性能优化、编程技巧以及r语言与其他语言的口等所有与r编程相关的知识,几乎面面俱到。本书的实用性也非常强,44个精选的扩展案例,充分展示了r语言在数据处理和统计分析方面的强大能力。
【推荐语】
R是一种用于统计计算与做图的源软件,同时也是一种编程语言,它广泛应用于企业和学术界的数据分析领域,正在成为*通用的语言之一。由于近几年数据挖掘、大数据等概念的走红,R也越来越多地被人关注。截至本文完成之日,CRAN(http://cran.r-project.org/)上共有4383个包,涉及统计、化学、经济、生物、医学、心理、社会学等各个学科。不同类型的公司,比如Google、辉瑞、默克、美国银行、洲际酒店集团和壳牌公司都在使用它,同时以S语言环境为基础的R语言由于其鲜明的特色,一出现就受到了统计专业人士的青睐,成为国外大学里相当标准的统计软件。 一直以来,国内外关于R语言的著作都是以统计学专业的视角来介绍R语言的,对R语言本身的特性讲解得并不详尽,而软件自带的官方文档又显得过于技术,不那么亲民。另一方面,很多触R的朋友都来自非计算机专业,没有受过编程训练,他们使用R的时候,编写出来的代码通常只能算是一条条命令的集合,面对更复杂的问题,常常束手无策。记得在某届R语言大会上,有位SAS阵营的朋友说,他看到演讲者所展示的代码里只有函数调用,没有编程的东西,所以他觉得R不能算一种编程语言。其实,他错了,此时你手里这本书,覆盖了其他大部分R语言图书没有涉及的编程主题。这本书就如同R语言的九阳神功秘籍,当神功练成,任督二脉一旦通,再学习针对某一领域应用的函数或包就如庖丁解牛一般。顺便提一下,据微博上的小道消息,前面提到的那位朋友*近也始学R了。 本书的特表现在以下几个方面: **,对读者的统计学知识和编程水平要求并不高。与很多R语言书籍不同,这本书并不需要很深的统计学功底,它从纯语言的角度手来讲解R。对于有一定编程经验却没什么统计学背景的人来说,读这本书会比较顺畅,读者就可以重关注R语言的特性在数据分析方面的应用。在有的地方,作者也会提醒那些有其他语言编程经验的人应该注意R语言有什么不同之处。而对于没有编程经验又想使用R做数据分析的人来说,这本书也是学习编程的绝佳教材。 第二,专注于R语言编程。作者没有把这本书定位为菜谱式的手册,也不像有些R语言图书那样介绍完统计学某方面应用之后简单地把R语言代码摆出来。翻这本书的目录,你几乎看不到统计学的术语。本书系统介绍了R语言的各种数据结构和编程结构、面向对象编程方法、socket网络编程、并行计算、代码调试、程序性能提升以及R语言与其他语言的口等主题。书中也提到了不少编程的小技巧,这都是作者多年编程经验的总结。 第三,丰富的案例分析。作者Matloff教授是位计算机科学家,同时也是位统计学家,有多年的教学经验,也做过统计学方法论的顾问。除了正文中的例子之外,本书还有44个扩展案例,很多案例源自作者亲身参与过的咨询项目。虽然本书没有讲解任何统计模型,但是扩展案例都是和数据分析相关的,比如对鲍鱼数据的重新编码(第2章)、寻找异常值(第3章)、文本词汇索引(第4章)、学习中文方言的辅助工具(第5章)等。通过学习这些案例,读者不仅能学到R语言的每种概念如何运作,也会学到如何把这些概念组合到一起成为有用的程序。比如第10章介绍了socket网络编程之后,就用一个扩展案例讲解如何用socket实现并行计算,这为第16章详细讲解并行计算做好了铺垫。在很多案例里,作者讨论了好几种设计方案,并比较了这几种方案的不同之处,以回答“为什么这样做”,这对于缺少编程经验的人来说,是非常好的安排。 本书第1章简要介绍了R语言的几种数据结构和编程基础,其余章节可分为三大部分。 **部分(第2~6章)详细介绍R的几种主要的数据结构:向量、矩阵、列表、数据框和因子等。对很多人来说,R复杂多变的数据结构真的是一只拦路虎。而本书从*简单的向量始,一步一步引导读者认识并掌握各种数据结构。 第二部分(第7~13章)涉及编程方面:编程结构和面向对象特性、输/输出、字符串处理以及绘图。值得一提的是第13章,这章主要讲解的是R语言的调试。很多朋友在实际工作中有这样的经历,你可能用了一个小时就写好代码,却用了一天的时间来调试。可是到目前为止还没有在其他图书上看到与R语言调试相关的内容,甚至也很少见到关于其他编程语言调试的图书。本书刚好填补了这方面的空白。如果读者仔细读完第13章,并实践其中的调试技巧,一定能事半功倍,也就能少熬儿夜,有延长寿命的功效。本书的作者同时也著有《调试的艺术》(TheArt of Debugging),相信他在R语言调试方面的功力也是相当深厚的。 第三部分(第14~16章)介绍的是更高级的内容,比如执行速度和性能的提升(第14章)、R语言与C/C++或Python混合编程(第15章)以及R语言并行计算(第16章),虽然*后一部分属于编程的高级内容,但如果读者从前往后一直学下来,随着能力的提高,也是可以读懂的。 本人从2007年始触R语言,那时候市面上几乎没有R语言方面的书籍。当时我关于R语言的所有信息几乎都是来自统计之都(http://cos.name)和谢益辉的博客(http://yihui.name)。2008年冬天,统计之都成功举办了“**届中国R语言会议”,来自各地的R语言用户们齐聚一堂,交流心得。从那以后,每年的R语言会议都会在北京和上海举办。这几年来,统计之都的队伍也逐渐壮大,比如本书的其他三位主要译者:邱怡轩、潘岚锋和熊熹,当年他们参加R语言会议的时候还是人大统计学院大一、大二的学生,后来也成为R语言社区的领军人物。去年我们到本书的翻译任务时,他们三人分别收到了美国普度大学、爱荷华州立大学以及明尼苏达大学的录取通知,现在已经在美国留学深造。希望有越来越多的人加统计之都的大家庭,和大家一起成长,为中国统计事业的发展尽自己的一份力。 在翻译过程中,几位译者力求忠实于原文,但纠正了原书的几处错误,同时也兼顾中文表达的流畅,不过译文中可能仍有不当之处,欢迎读者予以指正。 除了本人以及前面提到的三位译者之外,统计之都的三位老朋友林宇、严紫丹和程豪也参与了本书部分章节的校审和初稿翻译,在此表示感谢。全书译文*后由本人统稿,如有错误之处,均由本人承担。 也感谢机械工业出版社的吴怡编辑,她给予了我们细心的帮助。 统计之都的图书出版栏目(网址是http://cos.name/books/)有本书的页面,读者可以在这里下载本书的数据和代码,也可以留言提问。
【作者】
本书三位主要译者都是统计之都(http://cos.name)的管理员、中国R语言会议理事会成员。 陈堰平毕业于中国人民大学统计学院,现任国家金融信息中心数据中心研发部负责人,从事指数编制、指数化投资、金融衍生品方面的工作,对金融数据分析有多年的研究,博客网址为http://yanping.me。邱怡轩是普度大学统计系在读博士研究生,发过rarpark、R2SWF、Layer等R语言程序包,博客网址为http://yixuan.cos.name/。潘岚峰是爱荷华州立大学统计系在读博士研究生,发过R语言程序包bignmf。 陈堰平 2013年3月于新华通讯社第三工作区
目录展开

译者序

译者简介

前言

为什么在统计工作中用R

面向对象编程

函数式编程

本书的读者对象

我的学术背景

致谢

第1章 快速入门

1.1 怎样运行R

1.1.1 交互模式

1.1.2 批处理模式

1.2 第一个R会话

1.3 函数入门

1.3.1 变量的作用域

1.3.2 默认参数

1.4 R语言中一些重要的数据结构

1.4.1 向量,R语言中的战斗机

1.4.2 字符串

1.4.3 矩阵

1.4.4 列表

1.4.5 数据框

1.4.6 类

1.5 扩展案例:考试成绩的回归分析

1.6 启动和关闭R

1.7 获取帮助

1.7.1 help()函数

1.7.2 example()函数

1.7.3 如果你不太清楚要查找什么

1.7.4 其他主题的帮助

1.7.5 批处理模式的帮助

1.7.6 互联网资源

第2章 向量

2.1 标量、向量、数组与矩阵

2.1.1 添加或删除向量元素

2.1.2 获取向量长度

2.1.3 作为向量的矩阵和数组

2.2 声明

2.3 循环补齐

2.4 常用的向量运算

2.4.1 向量运算和逻辑运算

2.4.2 向量索引

2.4.3 用:运算符创建向量

2.4.4 使用seq()创建向量

2.4.5 使用rep()重复向量常数

2.5 使用all()和any()

2.5.1 扩展案例:寻找连续出现1的游程

2.5.2 扩展案例:预测离散值时间序列

2.6 向量化运算符

2.6.1 向量输入,向量输出

2.6.2 向量输入,矩阵输出

2.7 NA与NULL值

2.7.1 NA的使用

2.7.2 NULL的使用

2.8 筛选

2.8.1 生成筛选索引

2.8.2 使用subset()函数筛选

2.8.3 选择函数which()

2.9 向量化的ifelse()函数

2.9.1 扩展案例:度量相关性

2.9.2 扩展案例:对鲍鱼数据集重新编码

2.10 测试向量相等

2.11 向量元素的名称

2.12 关于c()的更多内容

第3章 矩阵和数组

3.1 创建矩阵

3.2 一般矩阵运算

3.2.1 线性代数运算

3.2.2 矩阵索引

3.2.3 扩展案例:图像操作

3.2.4 矩阵元素筛选

3.2.5 扩展案例:生成协方差矩阵

3.3 对矩阵的行和列调用函数

3.3.1 使用apply()函数

3.3.2 扩展案例:寻找异常值

3.4 增加或删除矩阵的行或列

3.4.1 改变矩阵的大小

3.4.2 扩展案例:找到图中距离最近的一对端点

3.5 向量与矩阵的差异

3.6 避免意外降维

3.7 矩阵的行和列的命名问题

3.8 高维数组

第4章 列表

4.1 创建列表

4.2 列表的常规操作

4.2.1 列表索引

4.2.2 增加或删除列表元素

4.2.3 获取列表长度

4.2.4 扩展案例:文本词汇索引

4.3 访问列表元素和值

4.4 在列表上使用apply系列函数

4.4.1 lapply()和sapply()的使用

4.4.2 扩展案例:文本词汇索引(续)

4.4.3 扩展案例:鲍鱼数据

4.5 递归型列表

第5章 数据框

5.1 创建数据框

5.1.1 访问数据框

5.1.2 扩展案例:考试成绩的回归分析(续)

5.2 其他矩阵式操作

5.2.1 提取子数据框

5.2.2 缺失值的处理

5.2.3 使用rbind()和cbind()等函数

5.2.4 使用apply()

5.2.5 扩展案例:工资研究

5.3 合并数据框

5.4 应用于数据框的函数

5.4.1 在数据框上应用lapply()和sapply()函数

5.4.2 扩展案例:应用Logistic模型

5.4.3 扩展案例:学习中文方言的辅助工具

第6章 因子和表

6.1 因子与水平

6.2 因子的常用函数

6.2.1 tapply函数

6.2.2 split()函数

6.2.3 by()函数

6.3 表的操作

6.3.1 表中有关矩阵和类似数组的操作

6.3.2 扩展案例:提取子表

6.3.3 扩展案例:在表中寻找频数最大的单元格

6.4 其他与因子和表有关的函数

6.4.1 aggregate()函数

6.4.2 cut()函数

第7章 R语言编程结构

7.1 控制语句

7.1.1 循环

7.1.2 对非向量集合的循环

7.1.3 if-else结构

7.2 算术和逻辑运算符及数值

7.3 参数的默认值

7.4 返回值

7.4.1 决定是否显式调用return()

7.4.2 返回复杂对象

7.5 函数都是对象

7.6 环境和变量作用域的问题

7.6.1 顶层环境

7.6.2 变量作用域的层次

7.6.3 关于ls()的进一步讨论

7.6.4 函数(几乎)没有副作用

7.6.5 扩展案例:显示调用框的函数

7.7 R语言中没有指针

7.8 向上级层次进行写操作

7.8.1 利用超赋值运算符对非局部变量进行写操作

7.8.2 用assign()函数对非局部变量进行写操作

7.8.3 扩展案例:用R语言实现离散事件仿真

7.8.4 什么时候使用全局变量

7.8.5 闭包

7.9 递归

7.9.1 Quicksort的具体实现

7.9.2 拓展举例:二叉查找树

7.10 置换函数

7.10.1 什么是置换函数

7.10.2 扩展案例:可记录元素修改次数的向量类

7.11 写函数代码的工具

7.11.1 文本编辑器和集成开发环境

7.11.2 edit()函数

7.12 创建自己的二元运算符

7.13 匿名函数

第8章 数学运算与模拟

8.1 数学函数

8.1.1 扩展例子:计算概率

8.1.2 累积和与累积乘积

8.1.3 最小值和最大值

8.1.4 微积分

8.2 统计分布函数

8.3 排序

8.4 向量和矩阵的线性代数运算

8.4.1 扩展示例:向量叉积

8.4.2 扩展示例:确定马尔科夫链的平稳分布

8.5 集合运算

8.6 用R做模拟

8.6.1 内置的随机变量发生器

8.6.2 重复运行时获得相同的随机数流

8.6.3 扩展案例:组合的模拟

第9章 面向对象的编程

9.1 S3类

9.1.1 S3泛型函数

9.1.2 实例:线性模型函数lm()中的OOP

9.1.3 寻找泛型函数的实现方法

9.1.4 编写S3类

9.1.5 使用继承

9.1.6 扩展示例:用于存储上三角矩阵的类

9.1.7 扩展示例:多项式回归程序

9.2 S4类

9.2.1 编写S4类

9.2.2 在S4类上实现泛型函数

9.3 S3类和S4类的对比

9.4 对象的管理

9.4.1 用ls()函数列出所有对象

9.4.2 用rm()函数删除特定对象

9.4.3 用save()函数保存对象集合

9.4.4 查看对象内部结构

9.4.5 exists()函数

第10章 输入与输出

10.1 连接键盘与显示器

10.1.1 使用scan()函数

10.1.2 使用readline()函数

10.1.3 输出到显示器

10.2 读写文件

10.2.1 从文件中读取数据框或矩阵

10.2.2 读取文本文件

10.2.3 连接的介绍

10.2.4 扩展案例:读取PUMS普查数据

10.2.5 通过URL在远程计算机上访问文件

10.2.6 写文件

10.2.7 获取文件和目录信息

10.2.8 扩展案例:多个文件内容的和

10.3 访问互联网

10.3.1 TCP/IP概述

10.3.2 R中的socket

10.3.3 扩展案例:实现R的并行计算

第11章 字符串操作

11.1 字符串操作函数概述

11.1.1 grep()

11.1.2 nchar()

11.1.3 paste()

11.1.4 sprintf()

11.1.5 substr()

11.1.6 strsplit()

11.1.7 regexpr()

11.1.8 gregexpr()

11.2 正则表达式

11.2.1 扩展案例:检测文件名的后缀

11.2.2 扩展案例:生成文件名

11.3 在调试工具edtdbg中使用字符串工具

第12章 绘图

12.1 创建图形

12.1.1 基础图形系统的核心:plot()函数

12.1.2 添加线条:abline()函数

12.1.3 在保持现有图形的基础上新增一个绘图窗口

12.1.4 扩展案例:在一张图中绘制两条密度曲线

12.1.5 扩展案例:进一步考察多项式回归

12.1.6 添加点:points()函数

12.1.7 添加图例:legend()函数

12.1.8 添加文字:text()函数

12.1.9 精确定位:locator()函数

12.1.10 保存图形

12.2 定制图形

12.2.1 改变字符大小:cex选项

12.2.2 改变坐标轴的范围:xlim和ylim选项

12.2.3 添加多边形:polygon()函数

12.2.4 平滑散点:lowess()和loess()函数

12.2.5 绘制具有显式表达式的函数

12.2.6 扩展案例:放大曲线的一部分

12.3 将图形保存到文件

12.3.1 R图形设备

12.3.2 保存已显示的图形

12.3.3 关闭R图形设备

12.4 创建三维图形

第13章 调试

13.1 调试的基本原则

13.1.1 调试的本质:确认原则

13.1.2 从小处着手

13.1.3 模块化的、自顶向下的调试风格

13.1.4 反漏洞

13.2 为什么要使用调试工具

13.3 使用R的调试工具

13.3.1 利用debug()和browser()函数进行逐步调试

13.3.2 使用浏览器命令

13.3.3 设置断点

13.3.3.1 直接调用browser()函数

13.3.3.2 使用setBreakpoint()函数

13.3.4 使用trace()函数进行追踪

13.3.5 使用traceback()和debugger()函数对崩溃的程序进行检查

13.3.6 扩展案例:两个完整的调试会话

13.3.6.1 调试“寻找1的游程”的程序

13.3.6.2 调试“寻找城市对”的程序

13.4 更方便的调试工具

13.5 在调试模拟数据的代码时请确保一致性

13.6 语法和运行时错误

13.7 在R上运行GDB

第14章 性能提升:速度和内存

14.1 编写快速的R代码

14.2 可怕的for循环

14.2.1 用向量化提升速度

14.2.2 扩展案例:在蒙特卡罗模拟中获得更快的速度

14.2.3 扩展案例:生成幂次矩阵

14.3 函数式编程和内存问题

14.3.1 向量赋值问题

14.3.2 改变时拷贝

14.3.3 扩展案例:避免内存拷贝

14.4 利用Rprof()来寻找代码的瓶颈

14.4.1 利用Rprof()来进行监视

14.4.2 Rprof()的工作原理

14.5 字节码编译

14.6 内存无法装下数据怎么办

14.6.1 分块

14.6.2 利用R软件包来进行内存管理

第15章 R与其他语言的接口

15.1 编写能被R调用的C/C++函数

15.1.1 R与C/C++交互的预备知识

15.1.2 例子:提取方阵的次对角线元素

15.1.3 编译和运行程序

15.1.4 调试R/C程序

15.1.5 扩展案例:预测离散取值的时间序列

15.2 从Python调用R

15.2.1 安装RPy

15.2.2 RPy语法

第16章 R语言并行计算

16.1 共同外链问题

16.2 snow包简介

16.2.1 运行snow代码

16.2.2 分析snow代码

16.2.3 可以获得多少倍的加速

16.2.4 扩展案例:K均值聚类

16.3 借助于C

16.3.1 利用多核机器

16.3.2 扩展案例:利用OpenMP解决共同外链问题

16.3.3 运行OpenMP代码

16.3.4 OpenMP代码分析

16.3.5 其他OpenMP指令

16.3.5.1 omp barrier指令

16.3.5.2 omp critical指令

16.3.5.3 omp single指令

16.3.6 GPU编程

16.4 普遍的性能考虑

16.4.1 开销的来源

16.4.1.1 共享内存的机器

16.4.1.2 网络计算机群系统

16.4.2 简单并行程序,以及那些不简单的

16.4.3 静态和动态任务分配

16.4.4 软件炼金术:将一般的问题转化为简单并行问题

16.5 调试R语言并行计算的代码

附录A 安装R

从CRAN下载R

通过Linux包管理器安装R

用源代码安装R

附录B 安装和使用包

B.1 包的基础知识

B.2 从硬盘中加载包

B.3 从网络下载包

B.3.1 自动安装包

B.3.2 手动安装包

B.4 列出包的所有函数

累计评论(3条) 3个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部