发表于2024-11-22
本书为解决各种R语言编程问题提供了非常有用的工具和技术,帮助你少走弯路。书中阐释了R语言简洁、优美以及灵活的核心特点,展示了许多必备的技巧,通过它们可以创建在各个场景中使用的优质代码。
本书主要内容
R语言基础知识,包括标准数据类型和函数。
将函数式编程作为有用的框架来解决多类问题。
元编程的优点与缺点。
编写快速及节省内存的程序。
本书展示了R的特别之处,为R软件使用者成为R程序员奠定了基础。中级R程序员则可以通过本书更深入地研究R语言,学习新策略来解决各种问题。而其他语言的程序员可以通过本书细致地了解R语言并理解R语言的运行方式。
本书从R语言的基础知识入手,深入介绍了R函数式编程、R语言的面向对象特性、程序的调试、代码优化和性能调优。同时,本书也介绍了R语言如何与HTML和LaTex语言结合的技术,介绍了高性能计算以及C语言编程接口。
哈德利 威克汉姆 (Hadley Wickham) R语言及相关领域的领军人物,RStudio首席科学家,美国莱斯大学统计学助理教授。他拥有超过10年的R语言编程经验,致力于开发用于数据处理、分析、成像的工具。他已经开发了几十个高质量的R软件包,如ggplot、lubridate、plyr、reshape2、 stringr和 httr等。
本书作者是R语言及相关领域的领军人物,为众多R语言社区的成员所熟知和欣赏。这就是本书*显著的优势。虽然越来越多的书籍在讨论本书讲述的主题,但是很少有相关书籍拥有同样的深度、技术上的准确性和*威性。
— Bill Venables, CSIRO
推荐序
译者序
第1章 简介1
1.1 本书的目标读者2
1.2 通过本书你可以学到什么2
1.3 元技术3
1.4 推荐阅读3
1.5 获取帮助4
1.6 致谢4
1.7 约定5
1.8 声明5
第一部分 基础知识
第2章 数据结构8
2.1 向量9
2.1.1 原子向量9
2.1.2 列表11
2.1.3 练习12
2.2 属性12
2.2.1 因子13
2.2.2 练习15
2.3 矩阵和数组15
2.4 数据框17
2.4.1 数据框构建17
2.4.2 类型判断与强制转换18
2.4.3 合并数据框18
2.4.4 特殊列19
2.4.5 练习19
2.5 答案19
第3章 子集选取21
3.1 数据类型22
3.1.1 原子向量22
3.1.2 列表23
3.1.3 矩阵和数组23
3.1.4 数据框24
3.1.5 S3对象25
3.1.6 S4对象25
3.1.7 练习25
3.2 子集选取运算符26
3.2.1 简化与保留26
3.2.2 $27
3.2.3 缺失/超出索引边界(越界引用)28
3.2.4 练习28
3.3 子集选取与赋值29
3.4 应用30
3.4.1 查询表(字符子集选取)30
3.4.2 人工比对与合并(整数子集选取)30
3.4.3 随机样本/自助法(整数子集选取) 31
3.4.4 排序(整数子集选取)31
3.4.5 展开重复记录(整数子集选取) 32
3.4.6 剔除数据框中某些列(字符子集选取) 33
3.4.7 根据条件选取行(逻辑子集选取) 33
3.4.8 布尔代数与集合(逻辑和整数子集选取) 34
3.4.9 练习35
3.5 答案35
第4章 常用函数与数据结构36
4.1 基础函数36
4.2 常见数据结构37
4.3 统计函数38
4.4 使用R39
4.5 I/O函数39
第5章 R编程风格指南40
5.1 符号和名字40
5.1.1 文件名40
5.1.2 对象名40
5.2 语法41
5.2.1 空格41
5.2.2 大括号42
5.2.3 行的长度42
5.2.4 缩进42
5.2.5 赋值43
5.3 结构43
第6章 函数44
6.1 函数组成部分45
6.1.1 原函数45
6.1.2 练习46
6.2 词法作用域46
6.2.1 名字屏蔽47
6.2.2 函数与变量48
6.2.3 重新开始48
6.2.4 动态查找49
6.2.5 练习50
6.3 每个运算都是一次函数调用50
6.4 函数参数51
6.4.1 函数调用52
6.4.2 使用参数列表来调用函数53
6.4.3 默认参数和缺失参数53
6.4.4 惰性求值54
6.4.5 ...参数56
6.4.6 练习57
6.5 特殊调用57
6.5.1 中缀函数57
6.5.2 替换函数58
6.5.3 练习59
6.6 返回值59
6.6.1 退出时61
6.6.2 练习62
6.7 答案62
第7章 面向对象编程指南64
7.1 基础类型65
7.2 S366
7.2.1 认识对象、泛型函数和方法66
7.2.2 定义类和创建对象67
7.2.3 创建新方法和泛型函数69
7.2.4 方法分派69
7.2.5 练习71
7.3 S471
7.3.1 识别对象、泛型函数和方法72
7.3.2 定义类并创建对象73
7.3.3 创建新方法和泛型函数74
7.3.4 方法分派74
7.3.5 练习75
7.4 RC75
7.4.1 定义类和创建对象75
7.4.2 识别类和方法77
7.4.3 方法分派77
7.4.4 练习77
7.5 选择一个系统77
7.6 答案78
第8章 环境79
8.1 环境基础79
8.2 环境递归83
8.3 函数环境85
8.3.1 封闭环境85
8.3.2 绑定环境86
8.3.3 执行环境87
8.3.4 调用环境88
8.3.5 练习90
8.4 绑定名字和数值90
8.5 显式环境92
8.5.1 避免复制93
8.5.2 软件包状态93
8.5.3 模拟hashmap93
8.6 答案94
第9章 调试、条件处理和防御性编程95
9.1 调试技巧96
9.2 调试工具97
9.2.1 确定调用顺序98
9.2.2 查看错误99
9.2.3 查看任意代码100
9.2.4 调用栈:traceback()、where和recover()100
9.2.5 其他类型的故障101
9.3 条件处理102
9.3.1 使用try来忽略错误102
9.3.2 使用tryCatch()处理条件103
9.3.3 withCallingHandlers()105
9.3.4 自定义信号类106
9.3.5 练习107
9.4 防御性编程107
9.5 答案109
第二部分 函数式编程
第10章 函数式编程112
10.1 动机112
10.2 匿名函数116
10.3 闭包117
10.3.1 函数工厂119
10.3.2 可变状态119
10.3.3 练习120
10.4 函数列表120
10.4.1 将函数列表移到全局环境中122
10.4.2 练习123
10.5 案例研究:数值积分124
第11章 泛函127
11.1 第一个泛函:lapply()128
11.1.1 循环模式129
11.1.2 练习130
11.2 for循环泛函:lapply()的相似函数131
11.2.1 向量输出:sapply和vapply131
11.2.2 多重输入:Map(和mapply)133
11.2.3 滚动计算134
11.2.4 并行化135
11.2.5 练习136
11.3 操作矩阵和数据框137
11.3.1 矩阵和数组运算137
11.3.2 组应用138
11.3.3 plyr添加包139
11.3.4 练习140
11.4 列表操作140
11.4.1 Reduce()140
11.4.2 判断泛函141
11.4.3 练习141
11.5 数学泛函142
11.6 应该保留的循环143
11.6.1 原位修改143
11.6.2 递归关系144
11.6.3 while循环144
11.7 创建一个函数系列145
第12章 函数运算符149
12.1 行为函数运算符150
12.1.1 缓存152
12.1.2 捕获函数调用153
12.1.3 惰性155
12.1.4 练习155
12.2 输出函数运算符156
12.2.1 简单修饰156
12.2.2 改变函数的输出157
12.2.3 练习158
12.3 输入函数运算符159
12.3.1 预填充函数参数:局部函数应用159
12.3.2 改变输入类型159
12.3.3 练习160
12.4 组合函数运算符161
12.4.1 函数复合161
12.4.2 逻辑判断和布尔代数163
12.4.3 练习163
第三部分 语言计算
第13章 非标准计算166
13.1 表达式获取167
13.2 在子集中进行非标准计算168
13.3 作用域问题171
13.4 从其他函数调用173
13.5 替换175
13.5.1 为替换提供应急方案177
13.5.2 捕获未计算的表达式177
13.5.3 练习178
13.6 非标准计算的缺点178
第14章 表达式180
14.1 表达式的结构180
14.2 名字183
14.3 调用184
14.3.1 修改调用185
14.3.2 根据调用的元素来创建调用186
14.3.3 练习186
14.4 捕获当前调用187
14.5 成对列表189
14.6 解析与逆解析191
14.7 使用递归函数遍历抽象语法树192
14.7.1 寻找F和T193
14.7.2 寻找通过赋值创建的所有变量194
14.7.3 修改调用树197
14.7.4 练习198
第15章 领域特定语言200
15.1 HTML200
15.1.1 目标201
15.1.2 转义202
15.1.3 基本标签函数203
15.1.4 标签函数204
15.1.5 处理所有标签205
15.1.6 练习206
15.2 LaTeX206
15.2.1 LaTeX 数学206
15.2.2 目标207
15.2.3 to_math207
15.2.4 已知符号207
15.2.5 未知符号208
15.2.6 已知函数209
15.2.7 未知函数210
15.2.8 练习211
第四部分 性能
第16章 性能214
16.1 R为什么速度慢214
16.2 微测试215
16.3 语言性能216
16.3.1 极端动态性216
16.3.2 可变环境下的名字搜索218
16.3.3 惰性求值开销219
16.3.4 练习219
16.4 实现的性能220
16.4.1 从数据框提取单一值220
16.4.2 ifelse()、pmin()和pmax()220
16.4.3 练习222
16.5 其他的R实现222
第17章 代码优化225
17.1 性能测试226
17.2 改进性能229
17.3 组织代码229
17.4 有人已经解决了这个问题吗230
17.5 尽可能少做231
17.6 向量化236
17.7 避免复制237
17.8 字节码编译238
17.9 案例研究:t检验238
17.10 并行化240
17.11 其他技术241
第18章 内存243
18.1 对象大小243
18.2 内存使用与垃圾回收246
18.3 使用lineprof对内存进行性能分析248
18.4 原地修改250
18.4.1 循环252
18.4.2 练习253
第19章 使用Rcpp编写高性能函数254
19.1 开始使用C++255
19.1.1 没有输入,标量输出256
19.1.2 标量输入,标量输出256
19.1.3 向量输入,标量输出257
19.1.4 向量输入,向量输出258
19.1.5 矩阵输入,向量输出258
19.1.6 使用sourceCpp259
19.1.7 练习260
19.2 属性和其他类261
19.2.1 列表和数据框262
19.2.2 函数262
19.2.3 其他类型263
19.3 缺失值263
19.3.1 标量263
19.3.2 字符串265
19.3.3 布尔型265
19.3.4 向量265
19.3.5 练习266
19.4 Rcpp 语法糖266
19.4.1 算术和逻辑运算符266
19.4.2 逻辑总结函数267
19.4.3 向量视图267
19.4.4 其他有用的函数267
19.5 STL268
19.5.1 使用迭代器268
19.5.2 算法269
19.5.3 数据结构270
19.5.4 向量270
19.5.5 集合271
19.5.6 图272
19.5.7 练习272
19.6 案例研究272
19.6.1 Gibbs采样器273
19.6.2 R向量化与C++向量化274
19.7 在添加包中应用Rcpp275
19.8 更多学习资源276
19.9 致谢277
第20章 R的C接口278
20.1 从R中调用C函数279
20.2 C数据结构280
20.3 创建和修改向量281
20.3.1 创建向量和垃圾回收281
20.3.2 缺失值和非有限值282
20.3.3 访问向量数据283
20.3.4 字符向量和列表284
20.3.5 修改输入284
20.3.6 强制转换标量285
20.3.7 长向量285
20.4 成对列表286
20.5 输入验证287
20.6 寻找一个函数的C源代码289
索引292
高级R语言编程指南 下载 mobi pdf epub txt 电子书 格式 2024
高级R语言编程指南 下载 mobi epub pdf 电子书给力
评分没看……66666666
评分不错,不错,这本书很对我的胃口!
评分东西不错,是正品,大品牌,值得信赖!!!
评分R语言必备
评分书是正版的,满减后很实惠,很好。
评分非常棒的一本书,想要精通R语言必读
评分书不错,但还是看不懂,需要努力。
评分东西不错,是正品,大品牌,值得信赖!!!
高级R语言编程指南 mobi epub pdf txt 电子书 格式下载 2024