《高级R语言编程指南》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)哈德利·威克汉姆(Hadley Wickham)著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2016
  • ISBN:9787111540670
  • 页数:297 页
图书介绍:本书从R语言的基础知识入手,深入介绍了R函数式编程、R语言的面向对象特性、程序的调试、代码优化和性能调优。同时,本书也介绍了R语言如何与HTML和LaTex语言结合的技术,介绍了高性能计算以及C语言编程接口。

第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

第一部分 基础知识 8

第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 使用R 39

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 S3 66

7.2.1 认识对象、泛型函数和方法 66

7.2.2 定义类和创建对象 67

7.2.3 创建新方法和泛型函数 69

7.2.4 方法分派 69

7.2.5 练习 71

7.3 S4 71

7.3.1 识别对象、泛型函数和方法 72

7.3.2 定义类并创建对象 73

7.3.3 创建新方法和泛型函数 74

7.3.4 方法分派 74

7.3.5 练习 75

7.4 RC 75

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 模拟hashmap 93

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

第二部分 函数式编程 112

第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和vapply 131

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

第三部分 语言计算 166

第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和T 193

14.7.2 寻找通过赋值创建的所有变量 194

14.7.3 修改调用树 197

14.7.4 练习 198

第15章 领域特定语言 200

15.1 HTML 200

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 LaTeX 206

15.2.1 LaTeX数学 206

15.2.2 目标 207

15.2.3 to_math 207

15.2.4 已知符号 207

15.2.5 未知符号 208

15.2.6 已知函数 209

15.2.7 未知函数 210

15.2.8 练习 211

第四部分 性能 214

第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 使用sourceCpp 259

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 STL 268

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 在添加包中应用Rcpp 275

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