内容简介
第一部分 简介
第1章 Rcpp简介
1.1 背景:从R到C++
1.2 示例一
1.2.1 问题设置
1.2.2 R解决方案之一
1.2.3 C++解决方案之一
1.2.4 使用inline扩展包
1.2.5 使用Rcpp attributes
1.2.6 R解决方案之二
1.2.7 C++解决方案之二
1.2.8 R解决方案之三
1.2.9 C++解决方案之三
1.3 示例二
1.3.1 问题设置
1.3.2 R解决方案
1.3.3 C++解决方案
1.3.4 比较
1.4 小结
第2章 工具与设置
2.1 整体设置
2.2 编译器
2.2.1 一般设置
2.2.2 平台相关的注意事项
2.3 R应用程序接口(API)
2.4 首次使用Rcpp进行编译
2.5 inline扩展包
2.5.1 概览
2.5.2 使用includes
2.5.3 使用plugin
2.5.4 制作plugin
2.6 Rcpp attributes
2.7 异常处理
第二部分 核心数据类型
第3章 数据结构:第一部分
3.1 RObject类
3.2 IntegerVector类
3.2.1 示例一:返回完美数
3.2.2 示例二:使用输入
3.2.3 示例三:使用错误的输入
3.3 NumbericVector类
3.3.1 示例一:使用两个输入
3.3.2 示例二:引入clone
3.3.3 示例三:矩阵
3.4 其他向量类
3.4.1 LogicalVector
3.4.2 CharacterVector
3.4.3 RawVector
第4章 数据结构:第二部分
4.1 Named类
4.2 List类,又名GenericVector类
4.2.1 从R中接受参数的List
4.2.2 使用List返回参数给R
4.3 DataFrame类
4.4 Function类
4.4.1 示例一:使用用户提供的函数
4.4.2 示例二:访问R函数
4.5 Environment类
4.6 S4类
4.7 ReferenceClasses
4.8 R数学库函数
第三部分 进阶话题
第5章 在扩展包中使用Rcpp
5.1 简介
5.2 使用Rcpp.package.skeleton
5.2.1 概述
5.2.2 R代码
5.2.3 C++代码
5.2.4 DESCRIPTION
5.2.5 Makevars和Makevars.win
5.2.6 NAMESPACE
5.2.7 帮助文件
5.3 案例学习:wordcloud扩展包
5.4 进一步的示例
第6章 扩展Rcpp
6.1 简介
6.2 扩展Rcpp::wrap
6.2.1 侵入式扩展
6.2.2 非侵入式扩展
6.2.3 模板与局部特化
6.3 扩展Rcpp::as
6.3.1 侵入式扩展
6.3.2 非侵入式扩展
6.3.3 模板与局部特化
6.4 案例学习:RcppBDT扩展包
6.5 进一步的示例
第7章 Modules
7.1 动机
7.1.1 使用Rcpp导出函数
7.1.2 使用Rcpp导出类
7.2 Rcpp Modules
7.2.1 使用Rcpp Modules导出C++函数
7.2.2 使用Rcpp Modules导出C++类
7.3 在其他扩展包中使用module
7.3.1 命名空间的导入导出
7.3.2 扩展包框架生成器对module的支持
7.3.3 module文档
7.4 案例学习:RcppCNPy扩展包
7.5 进一步的示例
第8章 Sugar
8.1 动机
8.2 运算符
8.2.1 二元算术运算符
8.2.2 二元逻辑运算符
8.2.3 一元运算符
8.3 函数
8.3.1 产生单一逻辑结果的函数
8.3.2 产生sugar表达式的函数
8.3.3 数学函数
8.3.4 d/q/p/r统计函数
8.4 性能
8.5 实现
8.5.1 CRTP模式
8.5.2 VectorBase类
8.5.3 实例:sapply
8.6 案例学习:使用Rcpp sugar计算π
第四部分 应用
第9章 RInside
9.1 动机
9.2 示例一:Hello, World!
9.3 示例二:数据传输
9.4 示例三:对R表达式求值
9.5 示例四:C++通过R作图
9.6 示例五:在MPI中使用RInside
9.7 其他示例
第10章 RcppArmadillo
10.1 概述
10.2 动机:FastLm
10.2.1 实现
10.2.2 性能比较
10.2.3 一个警告
10.3 案例学习:使用RcppArmadillo实现卡尔曼滤波
10.4 RcppArmadillo和Armadillo之间的区别
第11章 RcppGSL
11.1 简介
11.2 动机:FastLm
11.3 向量
11.3.1 GSL向量
11.3.2 RcppGSL::vector
11.3.3 对应
11.3.4 向量视图(vector view)
11.4 矩阵
11.4.1 生成矩阵
11.4.2 隐式转换
11.4.3 索引
11.4.4 方法
11.4.5 matrix view类
11.5 在自己的扩展包里使用RcppGSL
11.5.1 configure脚本
11.5.2 src文件夹
11.5.3 R文件夹
11.6 通过inline使用RcppGSL
11.7 案例:使用RcppGSL实现基于GSL的B-样条拟合
第12章 RcppEigen
12.1 简介
12.2 Eigen类
12.2.1 固定大小的向量和矩阵
12.2.2 动态大小的向量和矩阵
12.2.3 用于预制组件操作的数组
12.2.4 向量、矩阵和特殊矩阵的映射对象
12.3 案例学习:使用RcppEigen实现卡尔曼滤波
12.4 线性代数和矩阵分解
12.4.1 基本求解器
12.4.2 特征值和特征向量
12.4.3 最小二乘求解器
12.4.4 显秩分解
12.5 案例学习:RcppEigen中用于线性模型的C++工厂
附录A R程序员的C++入门
A.1 编译而不是解释
A.2 静态类型
A.3 一个更好的C
A.4 面向对象编程(但与S3或S4不同)
A.5 泛型编程和STL
A.6 模板编程
A.7 C++的进一步推荐读物
参考文献
主题索引
软件索引
作者索引