• R语言编程艺术
21年品牌 40万+商家 超1.5亿件商品

R语言编程艺术

正版保障 假一赔十 可开发票

38.44 5.6折 69 全新

库存14件

广东广州
认证卖家担保交易快速发货售后保障

作者Norman

出版社机械工业出版社

ISBN9787111423140

出版时间2022-07

装帧平装

开本16开

定价69元

货号23256388

上书时间2024-10-28

兴文书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言
R是一种用于数据处理和统计分析的脚本语言,它受到由AT&T实验室开发的统计语言S的启发,且基本上兼容于S语言。S语言的名称代表统计学(statistics),用来纪念AT&T开发的另一门以一个字母命名的编程语言,这就是著名的C语言。后来一家小公司买下了S,给它添加了图形用户界面并命名为S-Plus。
  由于R是免费的,而且有更多的人贡献自己的代码,R语言变得比S和S-Plus更受欢迎。R有时亦称为GNU S,以反映它的开源属性。(GNU项目是开源软件的一个重要集合。)
为什么在统计工作中用R
  粤语有个词“又便又靓”,意思是“物美价廉”,R语言就是这样一种工具,为什么还要用别的呢?
  R语言有许多优点:
  它是广受关注的统计语言S在公众领域的实现,而且R/S已经是专业统计学家的实际标准语言。
  在绝大多数情况下,它的功能不亚于甚至优于商业软件,比如它有大量的函数、良好的可编程性、强大的绘图功能,等等。
  在Windows、Mac、Linux等操作系统上都有相应的版本。
  除了提供统计操作以外,R还是门通用编程语言,所以你可以用它做自动分析、创建新的函数来拓展语言的现有功能。
  它结合了面向对象语言和函数式编程语言的特性。
  系统在两次会话之间可以保存数据集,所以不需要每次重新加载数据集。R还可以保存历史命令。
  因为R是开源软件,所以很容易从用户社区获得帮助。另外,用户们贡献了大量的新函数,其中很多用户都是杰出的统计学家。
  我必须事先提醒你, 好直接在终端窗口输入命令并提交给R,而不是在GUI里用鼠标点击菜单,并且大多数R用户都不用GUI。这并不是说R不能图形化操作。相反,它有很多工具可以生成实用、美观的图形,不过这些工具是用在系统输出方面,比如画图,而不是用在输入方面。
  如果你离不开GUI,则可以选用一种免费的GUI,它们是为R开发的,比如下面几种开源的或免费的工具:
  RStudio,http://www.rstudio.org/
  StatET,http://www.walware.de/goto/statet/
  ESS (Emacs Speaks Statistics),http://ess.r-project.org/
  R Commander:John Fox,“The R Commander: A Basic-Statistics Graphical Interface to R,” Journal of   Statistical Software 14, no. 9 (2005):1–42.
  JGR (Java GUI for R),http://cran.r-project.org/web/packages/JGR/index.html
  前三种软件,RStudio、StatET和 ESS属于集成开发环境(Integrated Development Environments, IDE),更多地是为编程设计的。StatET和ESS则为R程序员分别提供了针对著名的Eclipse 和Emacs环境的IDE。
  在商业软件中,另一种IDE出自Revolution Analytics公司,一家提供R语言服务的公司(http://www.revolutionanalytics.com/)。
  因为R是一种编程语言而不是各种不相关联的命令汇总,你可以把几个命令组合起来使用,每条命令用前一条命令的输出作为输入。(Linux用户可能会认出:这类似于用管道将shell命令串联起来。)这种组合R函数的能力带来了巨大的灵活性,如果使用恰当,功能会非常强大。
  下面是个简单的例子,请看这条命令:
  nrow(subset(x03,z == 1))
  首先,subset()函数针对数据框x03提取出变量z(取值为1)的所有记录,得到一个新的数据框,再把这个新数据框代入nrow()函数。这个函数计算数据框的行数。这行命令的 终效果是给出原数据框中z=1的记录的个数。
  之前提到过面向对象编程和函数式编程这两个术语。这两个主题会激起计算机科学家的兴趣,尽管它们对大多数读者来说可能有点陌生,但是它们跟任何使用R做统计编程的人都有关。下面概述这两个主题。
面向对象编程
  面向对象的优点可以用例子来解释,例如回归模型。当你用SAS、SPSS等其他统计软件做回归分析时,你会在屏幕上看到一大堆的输出结果。与之相反,如果在R里调用回归函数lm(),函数会返回一个包含所有结果的对象,对象里含有回归系数的估计、估计值的标准差、残差等。接下来你可以用编程的方式挑选对象里需要的部分并提取出来。
  你会看到通过R的方式可使编程变得更容易,部分因为它提供了访问数据的一致性。这种一致性源于R是多态的,即一个函数可以应用于不同类型的输入,函数在运行过程中会选择适当的方式来处理。这样的函数称为泛型函数。(如果你是C++程序员,肯定见过类似的概念虚函数。)
  例如plot()函数,如果你把它应用到一列数上,会得到一幅简单的图。但是如果把它应用到某个回归分析的输出结果中,会得到关于回归分析多个方面的一整套图形。当然,你只能在R生成的对象上使用plot()函数。这样也好,这意味着用户需要记的命令更少了!
函数式编程
  避免显式迭代是R语言的一个常见话题,这对于函数式编程语言来说是很典型的问题。你可以利用R的函数特性把迭代行为表达成隐式的,而不是用循环语句。这可以让代码执行起来更有效率,当R运行在大数据集上时运行时间会相

导语摘要
本书由计算机及科学家兼统计学家Matloff教授所写,深入细致地讲解R语言的基础知识与编程技巧,本书不仅揭示R编程语言的编程技巧,而且精选大量统计学案例,展示R语言在统计分析中的强大功能。本书内容深入浅出,没有编程基础和统计学知识的读者都能快速入门;而书中提到的很多编程技巧,特别是与其他语言相比较特殊的地方,都是作者多年编程经验的总结,对于想提高R语言技术的读者一定大有裨益。
本书第1章简要介绍了R语言的几种数据结构和编程基础,其余章节可分为三大部分:部分 (第2~6章)详细介绍R的几种主要的数据结构:向量、矩阵、列表、数据框和因子,从 简单的向量开始,一步一步引导读者认识并掌握各种数据结构,生动细腻地讲解了R复杂多变的数据结构。第二部分(第7~13章)涉及编程方面:编程结构和面向对象特性、输入/输出、 字符串处理以及绘图。还讲解了R语言的调试方法,本书的作者在R语言调试方面的功力相当深厚,本书也算填补了这方面的空白。第三部分(第14~16章)介绍高级编程内容,如执行速度和性能的提升、R语言与C/C++或Python混合编程、R语言并行计算等。

目录
译者序
前 言
致 谢
第1章 快速入门1
1.1 怎样运行R1
1.1.1 交互模式1
1.1.2 批处理模式2
1.2 个R会话3
1.3 函数入门5
1.3.1 变量的作用域7
1.3.2 默认参数8
1.4 R语言中一些重要的数据结构8
1.4.1 向量,R语言中的战斗机8
1.4.2 字符串9
1.4.3 矩阵9
1.4.4 列表10
1.4.5 数据框12
1.4.6 类12
1.5 扩展案例:考试成绩的回归分析13
1.6 启动和关闭R16
1.7 获取帮助17
1.7.1 help()函数18
1.7.2 example()函数18
1.7.3 如果你不太清楚要查找什么19
1.7.4 其他主题的帮助20
1.7.5 批处理模式的帮助21
1.7.6 互联网资源21
第2章 向量22
2.1 标量、向量、数组与矩阵22
2.1.1 添加或删除向量元素22
2.1.2 获取向量长度23
2.1.3 作为向量的矩阵和数组24
2.2 声明24
2.3 循环补齐25
2.4 常用的向量运算26
2.4.1 向量运算和逻辑运算26
2.4.2 向量索引27
2.4.3 用:运算符创建向量28
2.4.4 使用seq()创建向量28
2.4.5 使用rep()重复向量常数29
2.5 使用all()和any()30
2.5.1 扩展案例:寻找连续出现1的游程30
2.5.2 扩展案例:预测离散值时间序列31
2.6 向量化运算符34
2.6.1 向量输入,向量输出34
2.6.2 向量输入,矩阵输出36
2.7 NA与NULL值37
2.7.1 NA的使用37
2.7.2 NULL的使用37
2.8 筛选38
2.8.1 生成筛选索引38
2.8.2 使用subset()函数筛选40
2.8.3 选择函数which()40
2.9 向量化的ifelse()函数41
2.9.1 扩展案例:度量相关性42
2.9.2 扩展案例:对鲍鱼数据集重新编码44
2.10 测试向量相等46
2.11 向量元素的名称47
2.12 关于c()的更多内容48
第3章 矩阵和数组49
3.1 创建矩阵49
3.2 一般矩阵运算50
3.2.1 线性代数运算50
3.2.2 矩阵索引51
3.2.3 扩展案例:图像操作52
3.2.4 矩阵元素筛选55
3.2.5 扩展案例:生成协方差矩阵57
3.3 对矩阵的行和列调用函数58
3.3.1 使用apply()函数58
3.3.2 扩展案例:寻找异常值60
3.4 增加或删除矩阵的行或列61
3.4.1 改变矩阵的大小61
3.4.2 扩展案例:找到图中距离 近的一对端点63
3.5 向量与矩阵的差异65
3.6 避免意外降维66
3.7 矩阵的行和列的命名问题68
3.8 高维数组68
第4章 列表71
4.1 创建列表71
4.2 列表的常规操作72
4.2.1 列表索引72
4.2.2 增加或删除列表元素73
4.2.3 获取列表长度75
4.2.4 扩展案例:文本词汇索引75
4.3 访问列表元素和值78
4.4 在列表上使用apply系列函数79
4.4.1 lapply()和sapply()的使用79
4.4.2 扩展案例:文本词汇索引(续)80
4.4.3 扩展案例:鲍鱼数据82
4.5 递归型列表83
第5章 数据框85
5.1 创建数据框85
5.1.1 访问数据框85
5.1.2 扩展案例:考试成绩的回归分析(续)86
5.2 其他矩阵式操作87
5.2.1 提取子数据框87
5.2.2 缺失值的处理88
5.2.3 使用rbind()和cbind()等函数89
5.2.4 使用apply()90
5.2.5 扩展案例:工资研究90
5.3 合并数据框92
5.4 应用于数据框的函数95
5.4.1 在数据框上应用lapply()和sapply()函数95
5.4.2 扩展案例:应用Logistic模型95
5.4.3 扩展案例:学习中文方言的辅助工具96
第6章 因子和表102
6.1 因子与水平102
6.2 因子的常用函数103
6.2.1 tapply函数103
6.2.2 split()函数105
6.2.3 by()函数106
6.3 表的操作107
6.3.1 表中有关矩阵和类似数组的操作109
6.3.2 扩展案例: 提取子表111
6.3.3 扩展案例:在表中寻找频数 的单元格113
6.4 其他与因子和表有关的函数114
6.4.1 aggregate()函数115
6.4.2 cut()函数115
第7章 R语言编程结构116
7.1 控制语句116
7.1.1 循环116
7.1.2 对非向量集合的循环119
7.1.3 if-else结构120
7.2 算术和逻辑运算符及数值121
7.3 参数的默认值122
7.4 返回值123
7.4.1 决定是否显式调用return ()124
7.4.2 返回复杂对象124
7.5 函数都是对象124
7.6 环境和变量作用域的问题127
7.6.1 顶层环境127
7.6.2 变量作用域的层次128
7.6.3 关于ls()的进一步讨论131
7.6.4 函数(几乎)没有副作用131
7.6.5 扩展案例:显示调用框的函数132
7.7 R语言中没有指针134
7.8 向上级层次进行写操作136
7.8.1 利用超赋值运算符对非局部变量进行写操作136
7.8.2 用assign()函数对非局部变量进行写操作137
7.8.3 扩展案例:用R语言实现离散事件仿真138
7.8.4 什么时候使用全局变量145
7.8.5 闭包147
7.9 递归148
7.9.1 Quicksort的具体实现149
7.9.2 拓展举例:二叉查找树150
7.10 置换函数155
7.10.1 什么是置换函数155
7.10.2 扩展案例:可记录元素修改次数的向量类156
7.11 写函数代码的工具158
7.11.1 文本编辑器和集成开发环境158
7.11.2 edit()函数158
7.12 创建自己的二元运算符159
7.13 匿名函数159
第8章 数学运算与模拟161
8.1 数学函数161
8.1.1 扩展例子:计算概率161
8.1.2 累积和与累积乘积162
8.1.3  小值和 值162
8.1.4 微积分163
8.2 统计分布函数164
8.3 排序165
8.4 向量和矩阵的线性代数运算166
8.4.1 扩展示例:向量叉积169
8.4.2 扩展示例:确定马尔科夫链的平稳分布170
8.5 集合运算171
8.6 用R做模拟173
8.6.1 内置的随机变量发生器173
8.6.2 重复运行时获得相同的随机数流175
8.6.3 扩展案例:组合的模拟175
第9章 面向对象的编程177
9.1 S3类177
9.1.1 S3泛型函数177
9.1.2 实例:线性模型函数lm()中的OOP178
9.1.3 寻找泛型函数的实现方法179
9.1.4 编写S3类181
9.1.5 使用继承182
9.1.6 扩展示例:用于存储上三角矩阵的类183
9.1.7 扩展示例:多项式回归程序187
9.2 S4类191
9.2.1 编写S4类191
9.2.2 在S4类上实现泛型函数193
9.3 S3类和S4类的对比193
9.4 对象的管理194
9.4.1 用ls()函数列出所有对象194
9.4.2 用rm()函数删除特定对象194
9.4.3 用save()函数保存对象集合195
9.4.4 查看对象内部结构196
9.4.5 exists()函数197
第10章 输入与输出198
10.1 连接键盘与显示器198
10.1.1 使用scan()函数198
10.1.2 使用readline()函数200
10.1.3 输出到显示器201
10.2 读写文件202
10.2.1 从文件中读取数据框或矩阵202
10.2.2 读取文本文件203
10.2.3 连接的介绍203
10.2.4 扩展案例:读取PUMS普查数据204
10.2.5 通过URL在远程计算机上访问文件208
10.2.6 写文件209
10.2.7 获取文件和目录信息210
10.2.8 扩展案例:多个文件内容的和211
10.3 访问互联网211
10.3.1 TCP/IP概述212
10.3.2 R中的socket212
10.3.3 扩展案例:实现R的并行计算213
第11章 字符串操作216
11.1 字符串操作函数概述216
11.1.1 grep()216
11.1.2 nchar()216
11.1.3 paste()217
11.1.4 sprintf()217
11.1.5 substr()217
11.1.6 strsplit()217
11.1.7 regexpr()218
11.1.8 gregexpr()218
11.2 正则表达式218
11.2.1 扩展案例:检测文件名的后缀219
11.2.2 扩展案例:生成文件名220
11.3 在调试工具edtdbg中使用字符串工具221
第12章 绘图224
12.1 创建图形224
12.1.1 基础图形系统的核心:plot()函数224
12.1.2 添加线条:abline()函数225
12.1.3 在保持现有图形的基础上新增一个绘图窗口226
12.1.4 扩展案例:在一张图中绘制两条密度曲线227
12.1.5 扩展案例:进一步考察多项式回归228
12.1.6 添加点:points()函数231
12.1.7 添加图例:legend()函数231
12.1.8 添加文字:text()函数232
12.1.9 精确定位:locator()函数232
12.1.10 保存图形233
12.2 定制图形233
12.2.1 改变字符大小:cex选项233
12.2.2 改变坐标轴的范围:xlim和ylim选项234
12.2.3 添加多边形:polygon()函数235
12.2.4 平滑散点:lowess()和loess()函数236
12.2.5 绘制具有显式表达式的函数237
12.2.6 扩展案例:放大曲线的一部分237
12.3 将图形保存到文件240
12.3.1 R图形设备240
12.3.2 保存已显示的图形241
12.3.3 关闭R图形设备241
12.4 创建三维图形241
第13章 调试243
13.1 调试的基本原则243
13.1.1 调试的本质:确认原则243
13.1.2 从小处着手243
13.1.3 模块化的、自顶向下的调试风格244
13.1.4 反漏洞244
13.2 为什么要使用调试工具244
13.3 使用R的调试工具245
13.3.1 利用debug()和browser()函数进行逐步调试245
13.3.2 使用浏览器命令246
13.3.3 设置断点246
13.3.4 使用trac

内容摘要
本书由计算机及科学家兼统计学家Matloff教授所写,深入细致地讲解R语言的基础知识与编程技巧,本书不仅揭示R编程语言的编程技巧,而且精选大量统计学案例,展示R语言在统计分析中的强大功能。本书内容深入浅出,没有编程基础和统计学知识的读者都能快速入门;而书中提到的很多编程技巧,特别是与其他语言相比较特殊的地方,都是作者多年编程经验的总结,对于想提高R语言技术的读者一定大有裨益。
本书第1章简要介绍了R语言的几种数据结构和编程基础,其余章节可分为三大部分:部分 (第2~6章)详细介绍R的几种主要的数据结构:向量、矩阵、列表、数据框和因子,从 简单的向量开始,一步一步引导读者认识并掌握各种数据结构,生动细腻地讲解了R复杂多变的数据结构。第二部分(第7~13章)涉及编程方面:编程结构和面向对象特性、输入/输出、 字符串处理以及绘图。还讲解了R语言的调试方法,本书的作者在R语言调试方面的功力相当深厚,本书也算填补了这方面的空白。第三部分(第14~16章)介绍高级编程内容,如执行速度和性能的提升、R语言与C/C++或Python混合编程、R语言并行计算等。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP