內容簡介 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