《Rcpp:R与C++的无缝整合》已出版

内容简介 html

Rcpp是R应用最为普遍的语言扩展包,它被应用于超过100个CRAN和BioConductor的包中。这本书是关于Rcpp的第一本综合性导论。Rcpp使得用户能够在R和C++之间来回传递数值、向量、列表或者完整的R对象,在给R分析框架带来深度的同时,也带来了C++的威力、速度和效率。web

本书适用于但愿使用C++ 代码对R 进行扩展的R 用户。熟悉R 语言对于阅读本书天然颇有帮助;有不少其余书籍提供了回顾和特定的介绍。C++的知识也颇有帮助,尽管咱们不严格要求。附录为只熟悉R 语言的读者提供了一个很是简短的C++ 简介。算法

做者 编程

德克·埃德比特尔(Dirk Eddelbuettel) 成为CRAN的贡献者已逾十年,他维护了超过20个包,是R和其余量化软件在Debian/Ubuntu上的维护者,并负责编辑CRAN上的金融与高性能运算的任务视图。此外他仍是R/Finance年会的共同发起人,《统计软件》期刊的编辑。他拥有法国社会科学高等研究院(巴黎)的Ph.D.学位,现就任于芝加哥任高级量化分析师。数据结构

译者 框架

寇强,印第安纳大学在读博士,Rcpp核心团队成员。编程语言

张晔,中山大学计算数学硕士,毕业于华南统计科学研究中心。ide

推荐序言 函数

R 语言是一门主要用于数据处理、统计分析和可视化做图的解释型脚本语言。做为一门编程语言,R (及其“前身” S 语言)在设计之初就面临一个二选一的难题:语言的设计是应该面向用户,让使用者能够快速地建模,仍是应该面向机器,以使得代码能够高速地在计算机上运行?最终,语言的设计者们选择了前者,其理念是“人的时间” 比“机器的时间” 更为宝贵。在R 语言诞生后的十几年间,事实证实这个最初的决定使得R 逐渐发展为一门具备高度灵活性和可扩展性的统计编程语言,进而极大地促进了其背后R 语言社区的发展壮大。工具

然而,语言的简洁性和灵活性并不是恒久不变的法则。随着统计模型愈来愈复杂,数据量愈来愈大,众多的R 语言开发者和使用者开始发现效率成为了这门语言的一个瓶颈。“人的时间” 当然宝贵,但“人等待机器的时间” 一样不可忽视。如何在保持语法不变的同时提高程序执行的效率,成为了R 语言开发者们一个十分关注的话题。

事实上,在R 语言诞生的初期,其核心开发团队就给出了一个解决方案:将计算密集的算法用C/C++ 实现,而后在R 中调用这部分代码。R 语言提供了一系列的API (应用程序接口)来实现它与其余语言的交互,但在很长的一段时间里,积极使用这些接口的R 软件包开发者并不占多数,其中可能最重要的一个缘由就是这些接口的使用相对繁琐,且文档资料也不够丰富,开发者空有屠龙之刀,却无屠龙之技。

幸运的是,这一局面在Rcpp 横空出世后被完全打破。我第一次据说Rcpp是在2009 年,当时在统计之都论坛的帖子上(http://cos.name/cn/topic/17665/)你们在讨论如何用R 调用C++ 程序,因而通过一些搜索后我从R 的软件仓库中找到了这个软件包。当时的Rcpp 核心只有两个文件,代码总量不到2000 行,但那时它已经能够极大地简化R 与C++ 之间的交互。现现在,Rcpp 的代码量已经接近10 万行,在R 的官方软件包仓库中有超过300 个软件包直接依赖于Rcpp,而它也成为了被依赖次数最多的R 语言扩展包(除去R 自身默认提供的扩展包),没有之一。

总的来讲,Rcpp 定义了一系列的类、函数和接口来加强R 与C++ 之间的交互性。用户只需懂得基本的C++ 知识,就能够写出丰富的可供R 调用的C++ 程序。与R 中传统的C 语言API 相比,Rcpp 利用了更为现代的C++ 编程技术,故而其语法更为简洁,也更富表现力和可读性。此外,Rcpp 还特地针对R 软件包开发提供了一系列便捷的辅助程序,使得开发者

能够快速地部署项目,开发软件包,省去了许多繁琐而枯燥的设置。或许,这正是Rcpp 能迅速地得到R 软件包开发者青睐的缘由。

本书的原做者,Dirk Eddelbuettel,正是Rcpp 从最先到如今开发工做的主导者。从这个角度来讲,由做者本身来阐述Rcpp 的设计理念和使用方法是最为恰当不过的了。而更为难得的是,做者在全书中使用了大量的实例和代码来说解Rcpp 的细节,能够预想,读者不管是在理念上仍是在实战中都能从本书中受益。

本书的两位译者为本书中文版的面世付出了大量的时间和心血。须要特别提到的是,两位译者一样也是R 社区活跃的开发者,他们在许多R 软件包和编程项目中都大量使用了Rcpp。也正是由于如此,两位译者在执笔过程当中融入了本身使用Rcpp 的心得和体会,在语言上将本来可能艰涩的编程概念用更加平易近人的方式表达出来,相信读者在阅读本书的过程当中会体会到译者的用心。

邱怡轩

2015 年3 月于普渡大学

全书目录

  • 第一部分 简介

    • 第1章 Rcpp简介

    • 第2章 工具与设置

  • 第二部分 核心数据类型

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

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

  • 第三部分 进阶话题

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

    • 第6章 扩展Rcpp

    • 第7章 Modules

    • 第8章 Suger

  • 第四部分 应用

    • 第9章 RInside

    • 第10章 RcppArmadillo

    • 第11章 RcppGSL

    • 第12章 RcppEigen

本文由雪晴数据网转载,图书购买连接http://item.jd.com/10110511708.html做者Dirk Eddelbuettel。转载请注明原文连接http://www.xueqing.cc/cms/article/108

相关文章
相关标签/搜索