当前位置: 首页 > 资源下载  > 电子书 > 计算机

Rcpp:R与C++的无缝整合

12/16/2018 9:53:18 PM 人评论

R 语言是一门主要用于数据处理、统计分析和可视化作图的解释型脚本语言。作为一门编程语言,R (及其“前身” S 语言)在设计之初就面临一个二选一的难题:语言的设计是应该面向用户,让使用者可以快速地建模,还是应该面向机器,以使得代码可以高速地在计算机上运行?最

Rcpp:R与C++的无缝整合

Rcpp:R与C++的无缝整合

编辑推荐

  

  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 的心得和体会,在语言上将原本可能艰涩的编程概念用更加平易近人的方式表达出来,相信读者在阅读本书的过程中会体会到译者的用心。


  

内容简介

  

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

  本书适用于希望使用C++ 代码对R 进行扩展的R 用户。熟悉R 语言对于阅读本书自然很有帮助;有很多其他书籍提供了回顾和特定的介绍。C++的知识也很有帮助,尽管我们不严格要求。附录为只熟悉R 语言的读者提供了一个非常简短的C++ 简介。


  

作者简介

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

附件下载

  • 下载

    百度网盘下载

    下载: 所需积分:90

  • 积分获取方法:先给账户进行充值,然后进行积分兑换,积分兑换比例:1元可兑换10个积分.
    具体可参考帮助如何获取积分说明

相关资源

  • 图解黄帝宅经全新图解认识中国居住之道

    住宅文化是中国古代关于居住环境规划和设计的一门学问,历史悠久 ,渊远流长,是中国传统文化的独特产物。《黄帝宅经》相传是黄帝所作 ,它综述了中国住宅文化的精髓,强调了要根据环境综合考察阳宅,相宅 应当“以形势为身体,以泉水为血脉,以土地为皮肉,以草木为毛发

    10/19/2024 8:39:11 PM
  • Java2认证考试指南与试题解析

    Java2认证考试指南与试题解析作者:孙卫琴,李洪成编著ISBN:9787532366279出版社:上海科学技术出版社出版日期:2002年01月市场价:78.00内容简介Sun公司在Unix领域一直是技术和市场占有率的领先者,近年来她又推出了Java技术,并成为业界的标准。目前,Java的培训和认证…

    9/21/2024 8:42:52 PM
  • 精通Struts:基于MVC的JavaWeb设计与开发

    Struts是目前非常流行的基于MVC的Java Web框架。《精通Struts:基于MVC的Java Web设计与开发》详细介绍了在的Struts1.1以及不久将推出的Struts1.2版本上设计和开发Java Web应用的各种技术。本书章到第3章为入门篇,通过两个Struts应用实例,引导读者把握设计、开发和部署…

    9/21/2024 8:31:16 PM
  • JAVA开发专家·精通Hibernate:Java对象持久化技术详解(第2版)

    凝聚Java魅力,成就开发专家 看清Java万花筒的本质,从复杂的表象中寻找普遍的规律,深刻理解Java的核心思想 本书在第1版的基础上,并结合作者多年经验,将更新的理论知识,精心细致地介绍新技术应用。 《精通Hibernate:Java对象持久化技术详解(第2版)…

    9/20/2024 11:09:15 PM