《Rcpp R与C++的无缝整合》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(法)德克·埃德比特尔(DirkEddelbuettel)著
  • 出 版 社:西安:西安交通大学出版社
  • 出版年份:2015
  • ISBN:9787560581101
  • 页数:250 页
图书介绍:本书是Rcpp相关的第一本完整教程。Rcpp是现今最广泛使用的R语言扩展,R社区在此基础上之上已经开发超过一百个扩展报。通过Rcpp,用户可以非常方便地在R和C++之间传递对象,而免去了以往手动进行内存管理的麻烦。Rcpp为广大用户提供了一个方便的分析框架,既可以利用R语言的灵活特性,又可以整合C++的高效与速度。

第一部分 简介 1

第1章 Rcpp简介 3

1.1 背景:从R到C++ 3

1.2 示例一 7

1.2.1 问题设置 7

1.2.2 R解决方案之一 8

1.2.3 C++解决方案之一 9

1.2.4 使用inline扩展包 10

1.2.5 使用Rcpp attributes 12

1.2.6 R解决方案之二 13

1.2.7 C++解决方案之二 14

1.2.8 R解决方案之三 16

1.2.9 C++解决方案之三 16

1.3 示例二 17

1.3.1 问题设置 17

1.3.2 R解决方案 18

1.3.3 C++解决方案 19

1.3.4 比较 20

1.4 小结 20

第2章 工具与设置 21

2.1 整体设置 21

2.2 编译器 22

2.2.1 一般设置 22

2.2.2 平台相关的注意事项 23

2.3 R应用程序接口(API) 25

2.4 首次使用Rcpp进行编译 25

2.5 inline扩展包 27

2.5.1 概览 28

2.5.2 使用includes 31

2.5.3 使用plugin 32

2.5.4 制作plugin 33

2.6 Rcpp attributes 35

2.7 异常处理 36

第二部分 核心数据类型 41

第3章 数据结构:第一部分 43

3.1 RObject类 43

3.2 IntegerVector类 45

3.2.1 示例一:返回完美数 46

3.2.2 示例二:使用输入 47

3.2.3 示例三:使用错误的输入 48

3.3 NumbericVector类 50

3.3.1 示例一:使用两个输入 50

3.3.2 示例二:引入clone 50

3.3.3 示例三:矩阵 53

3.4 其他向量类 54

3.4.1 LogicalVector 54

3.4.2 CharacterVector 55

3.4.3 RawVector 55

第4章 数据结构:第二部分 56

4.1 Named类 56

4.2 List类,又名GenericVector类 58

4.2.1 从R中接受参数的List 58

4.2.2 使用List返回参数给R 59

4.3 DataFrame类 60

4.4 Function类 62

4.4.1 示例一:使用用户提供的函数 62

4.4.2 示例二:访问R函数 63

4.5 Environment类 63

4.6 S4类 64

4.7 ReferenceClasses 66

4.8 R数学库函数 67

第三部分 进阶话题 69

第5章 在扩展包中使用Rcpp 71

5.1 简介 71

5.2 使用Rcpp.package.skeleton 72

5.2.1 概述 72

5.2.2 R代码 74

5.2.3 C++代码 74

5.2.4 DESCRIPTION 76

5.2.5 Makevars和Makevars.win 76

5.2.6 NAMESPACE 78

5.2.7 帮助文件 78

5.3 案例学习:wordcloud扩展包 80

5.4 进一步的示例 82

第6章 扩展Rcpp 83

6.1 简介 83

6.2 扩展Rcpp::wrap 84

6.2.1 侵入式扩展 85

6.2.2 非侵入式扩展 85

6.2.3 模板与局部特化 86

6.3 扩展Rcpp::as 86

6.3.1 侵入式扩展 87

6.3.2 非侵入式扩展 87

6.3.3 模板与局部特化 87

6.4 案例学习:RcppBDT扩展包 89

6.5 进一步的示例 91

第7章 Modules 92

7.1 动机 92

7.1.1 使用Rcpp导出函数 92

7.1.2 使用Rcpp导出类 93

7.2 Rcpp Modules 96

7.2.1 使用Rcpp Modules导出C++函数 96

7.2.2 使用Rcpp Modules导出C++类 101

7.3 在其他扩展包中使用module 110

7.3.1 命名空间的导入导出 110

7.3.2 扩展包框架生成器对module的支持 112

7.3.3 module文档 112

7.4 案例学习:RcppCNPy扩展包 112

7.5 进一步的示例 115

第8章 Sugar 116

8.1 动机 116

8.2 运算符 118

8.2.1 二元算术运算符 118

8.2.2 二元逻辑运算符 119

8.2.3 一元运算符 120

8.3 函数 121

8.3.1 产生单一逻辑结果的函数 121

8.3.2 产生sugar表达式的函数 122

8.3.3 数学函数 128

8.3.4 d/q/p/r统计函数 129

8.4 性能 131

8.5 实现 132

8.5.1 CRTP模式 132

8.5.2 VectorBase类 133

8.5.3 实例:sapply 134

8.6 案例学习:使用Rcpp sugar计算π 139

第四部分 应用 143

第9章 RInside 145

9.1 动机 145

9.2 示例一:Hello, World! 146

9.3 示例二:数据传输 149

9.4 示例三:对R表达式求值 151

9.5 示例四:C++通过R作图 152

9.6 示例五:在MPI中使用RInside 153

9.7 其他示例 155

第10章 RcppArmadillo 157

10.1 概述 157

10.2 动机:FastLm 159

10.2.1 实现 159

10.2.2 性能比较 160

10.2.3 一个警告 163

10.3 案例学习:使用RcppArmadillo实现卡尔曼滤波 166

10.4 RcppArmadillo和Armadillo之间的区别 174

第11章 RcppGSL 176

11.1 简介 176

11.2 动机:FastLm 177

11.3 向量 179

11.3.1 GSL向量 180

11.3.2 RcppGSL::vector 181

11.3.3 对应 183

11.3.4 向量视图(vector view) 183

11.4 矩阵 185

11.4.1 生成矩阵 185

11.4.2 隐式转换 185

11.4.3 索引 185

11.4.4 方法 186

11.4.5 matrix view类 186

11.5 在自己的扩展包里使用RcppGSL 186

11.5.1 configure脚本 187

11.5.2 src文件夹 189

11.5.3 R文件夹 190

11.6 通过inline使用RcppGSL 190

11.7 案例:使用RcppGSL实现基于GSL的B-样条拟合 192

第12章 RcppEigen 202

12.1 简介 202

12.2 Eigen类 203

12.2.1 固定大小的向量和矩阵 203

12.2.2 动态大小的向量和矩阵 204

12.2.3 用于预制组件操作的数组 206

12.2.4 向量、矩阵和特殊矩阵的映射对象 206

12.3 案例学习:使用RcppEigen实现卡尔曼滤波 207

12.4 线性代数和矩阵分解 210

12.4.1 基本求解器 210

12.4.2 特征值和特征向量 211

12.4.3 最小二乘求解器 212

12.4.4 显秩分解 212

12.5 案例学习:RcppEigen中用于线性模型的C++工厂 214

附录A R程序员的C++入门 223

A.1 编译而不是解释 223

A.2 静态类型 225

A.3 一个更好的C 226

A.4 面向对象编程(但与S3或S4不同) 229

A.5 泛型编程和STL 230

A.6 模板编程 232

A.7 C++的进一步推荐读物 234

参考文献 235

主题索引 241

软件索引 247

作者索引 249