編輯推薦
著名計算機科學傢兼統計學傢撰寫,R語言領域公認經典著作。
從純編程角度係統講解R語言的數據結構、編程結構、語法、TCP/IP網絡編程、並行計算、代碼調試、程序性能優化、編程技巧以及R語言與其他語言的接口。
海報:
內容簡介
《華章科技:R語言編程藝術》是R語言領域公認的經典著作,由著名計算機科學傢兼統計學傢撰寫,它是一本麵嚮R語言開發者的純編程類書籍,不需要讀者具備統計學基礎,從編程角度而非統計學角度係統講解瞭R語言的數據結構、編程結構、語法、TCP/IP網絡編程、並行計算、代碼調試、程序性能優化、編程技巧以及R語言與其他語言的接口等所有與R編程相關的知識,幾乎麵麵俱到。《華章科技:R語言編程藝術》的實用性也非常強,44個精選的擴展案例,充分展示瞭R語言在數據處理和統計分析方麵的強大能力。
《華章科技:R語言編程藝術》一共16章:第1章介紹瞭學習R語言需要掌握的預備知識以及它的一些重要數據結構;第2~6章詳細講解瞭R語言的主要數據結構,包括嚮量、矩陣、數組、列錶、數據框和因子;第7~13章全麵講解瞭R語言的語法,包括編程結構、麵嚮對象特性、數學運算與模擬、輸入與輸齣、字符串處理、繪圖,以及R語言的調試方法。第14~16章講解瞭R語言編程的高級內容,如執行速度和性能的提升、R語言與C/C++或Python的混閤編程,以及R語言的並行計算等。
作者簡介
Norman Matloff,著名計算機科學傢兼統計學傢,美國加州大學戴維斯分校計算機科學係教授,曾是該校統計專業的創建者之一,並擔任過統計學教授,對並行編程、網絡流量、數據挖掘、磁盤係統性能等方麵的技術都有深入的研究。他樂於分享,撰寫瞭多部廣受歡迎的關於軟件開發的在綫教程,多次為《紐約時報》、《華盛頓郵報》、《福布斯雜誌》以及《洛杉磯時報》撰寫文章,是《The Art of Debugging》的作者之一。
內頁插圖
目錄
譯者序
緻謝
第1章 快速入門
1.1 怎樣運行R
1.1.1 交互模式
1.1.2 批處理模式
1.2 第一個R會話
1.3 函數入門
1.3.1 變量的作用域
1.3.2 默認參數
1.4 R語言中一些重要的數據結構
1.4.1 嚮量,R語言中的戰鬥機
1.4.2 字符串
1.4.3 矩陣
1.4.4 列錶
1.4.5 數據框
1.4.6 類
1.5 擴展案例:考試成績的迴歸分析
1.6 啓動和關閉R
1.7 獲取幫助
1.7.1 help()函數
1.7.2 example()函數
1.7.3 如果你不太清楚要查找什麼
1.7.4 其他主題的幫助
1.7.5 批處理模式的幫助
1.7.6 互聯網資源
第2章 嚮量
2.1 標量、嚮量、數組與矩陣
2.1.1 添加或刪除嚮量元素
2.1.2 獲取嚮量長度
2.1.3 作為嚮量的矩陣和數組
2.2 聲明
2.3 循環補齊
2.4 常用的嚮量運算
2.4.1 嚮量運算和邏輯運算
2.4.2 嚮量索引
2.4.3 用:運算符創建嚮量
2.4.4 使用seq()創建嚮量
2.4.5 使用rep()重復嚮量常數
2.5 使用all()和any()
2.5.1 擴展案例:尋找連續齣現1的遊程
2.5.2 擴展案例:預測離散值時間序列
2.6 嚮量化運算符
2.6.1 嚮量輸入,嚮量輸齣
2.6.2 嚮量輸入,矩陣輸齣
2.7 NA與NULL值
2.7.1 NA的使用
2.7.2 NULL的使用
2.8 篩選
2.8.1 生成篩選索引
2.8.2 使用subset()函數篩選
2.8.3 選擇函數which()
2.9 嚮量化的ifelse()函數
2.9.1 擴展案例:度量相關性
2.9.2 擴展案例:對鮑魚數據集重新編碼
2.10 測試嚮量相等
2.11 嚮量元素的名稱
2.12 關於c()的更多內容
第3章 矩陣和數組
3.1 創建矩陣
3.2 一般矩陣運算
3.2.1 綫性代數運算
3.2.2 矩陣索引
3.2.3 擴展案例:圖像操作
3.2.4 矩陣元素篩選
3.2.5 擴展案例:生成協方差矩陣
3.3 對矩陣的行和列調用函數
3.3.1 使用apply()函數
3.3.2 擴展案例:尋找異常值
3.4 增加或刪除矩陣的行或列
3.4.1 改變矩陣的大小
3.4.2 擴展案例:找到圖中距離最近的一對端點
3.5 嚮量與矩陣的差異
3.6 避免意外降維
3.7 矩陣的行和列的命名問題
3.8 高維數組
第4章 列錶
4.1 創建列錶
4.2 列錶的常規操作
4.2.1 列錶索引
4.2.2 增加或刪除列錶元素
4.2.3 獲取列錶長度
4.2.4 擴展案例:文本詞匯索引
4.3 訪問列錶元素和值
4.4 在列錶上使用apply係列函數
4.4.1 lapply()和sapply()的使用
4.4.2 擴展案例:文本詞匯索引(續)
4.4.3 擴展案例:鮑魚數據
4.5 遞歸型列錶
第5章 數據框
5.1 創建數據框
5.1.1 訪問數據框
5.1.2 擴展案例:考試成績的迴歸分析(續)
5.2 其他矩陣式操作
5.2.1 提取子數據框
5.2.2 缺失值的處理
5.2.3 使用rbind()和cbind()等函數
5.2.4 使用apply()
5.2.5 擴展案例:工資研究
5.3 閤並數據框
5.4 應用於數據框的函數
5.4.1 在數據框上應用lapply()和sapply()函數
5.4.2 擴展案例:應用Logistic模型
5.4.3 擴展案例:學習中文方言的輔助工具
第6章 因子和錶
6.1 因子與水平
6.2 因子的常用函數
6.2.1 tapply函數
6.2.2 split()函數
6.2.3 by()函數
6.3 錶的操作
6.3.1 錶中有關矩陣和類似數組的操作
6.3.2 擴展案例: 提取子錶
6.3.3 擴展案例:在錶中尋找頻數最大的單元格
6.4 其他與因子和錶有關的函數
6.4.1 aggregate()函數
6.4.2 cut()函數
第7章 R語言編程結構
7.1 控製語句
7.1.1 循環
7.1.2 對非嚮量集閤的循環
7.1.3 if-else結構
7.2 算術和邏輯運算符及數值
7.3 參數的默認值
7.4 返迴值
7.4.1 決定是否顯式調用return ()
7.4.2 返迴復雜對象
7.5 函數都是對象
7.6 環境和變量作用域的問題
7.6.1 頂層環境
7.6.2 變量作用域的層次
7.6.3 關於ls()的進一步討論
7.6.4 函數(幾乎)沒有副作用
7.6.5 擴展案例:顯示調用框的函數
7.7 R語言中沒有指針
7.8 嚮上級層次進行寫操作
7.8.1 利用超賦值運算符對非局部變量進行寫操作
7.8.2 用assign()函數對非局部變量進行寫操作
7.8.3 擴展案例:用R語言實現離散事件仿真
7.8.4 什麼時候使用全局變量
7.8.5 閉包
7.9 遞歸
7.9.1 Quicksort的具體實現
7.9.2 拓展舉例:二叉查找樹
7.10 置換函數
7.10.1 什麼是置換函數
7.10.2 擴展案例:可記錄元素修改次數的嚮量類
7.11 寫函數代碼的工具
7.11.1 文本編輯器和集成開發環境
7.11.2 edit()函數
7.12 創建自己的二元運算符
7.13 匿名函數
第8章 數學運算與模擬
8.1 數學函數
8.1.1 擴展例子:計算概率
8.1.2 纍積和與纍積乘積
8.1.3 最小值和最大值
8.1.4 微積分
8.2 統計分布函數
8.3 排序
8.4 嚮量和矩陣的綫性代數運算
8.4.1 擴展示例:嚮量叉積
8.4.2 擴展示例:確定馬爾科夫鏈的平穩分布
8.5 集閤運算
8.6 用R做模擬
8.6.1 內置的隨機變量發生器
8.6.2 重復運行時獲得相同的隨機數流
8.6.3 擴展案例:組閤的模擬
第9章 麵嚮對象的編程
9.1 S3類
9.1.1 S3泛型函數
9.1.2 實例:綫性模型函數lm()中的OOP
9.1.3 尋找泛型函數的實現方法
9.1.4 編寫S3類
9.1.5 使用繼承
9.1.6 擴展示例:用於存儲上三角矩陣的類
9.1.7 擴展示例:多項式迴歸程序
9.2 S4類
9.2.1 編寫S4類
9.2.2 在S4類上實現泛型函數
9.3 S3類和S4類的對比
9.4 對象的管理
9.4.1 用ls()函數列齣所有對象
9.4.2 用rm()函數刪除特定對象
9.4.3 用save()函數保存對象集閤
9.4.4 查看對象內部結構
9.4.5 exists()函數
第10章 輸入與輸齣
10.1 連接鍵盤與顯示器
10.1.1 使用scan()函數
10.1.2 使用readline()函數
10.1.3 輸齣到顯示器
10.2 讀寫文件
10.2.1 從文件中讀取數據框或矩陣
10.2.2 讀取文本文件
10.2.3 連接的介紹
10.2.4 擴展案例:讀取PUMS普查數據
10.2.5 通過URL在遠程計算機上訪問文件
10.2.6 寫文件
10.2.7 獲取文件和目錄信息
10.2.8 擴展案例:多個文件內容的和
10.3 訪問互聯網
10.3.1 TCP/IP概述
10.3.2 R中的socket
10.3.3 擴展案例:實現R的並行計算
第11章 字符串操作
11.1 字符串操作函數概述
11.1.1 grep()
11.1.2 nchar()
11.1.3 paste()
11.1.4 sprintf()
11.1.5 substr()
11.1.6 strsplit()
11.1.7 regexpr()
11.1.8 gregexpr()
11.2 正則錶達式
11.2.1 擴展案例:檢測文件名的後綴
11.2.2 擴展案例:生成文件名
11.3 在調試工具edtdbg中使用字符串工具
第12章 繪圖
12.1 創建圖形
12.1.1 基礎圖形係統的核心:plot()函數
12.1.2 添加綫條:abline()函數
12.1.3 在保持現有圖形的基礎上新增一個繪圖窗口
12.1.4 擴展案例:在一張圖中繪製兩條密度麯綫
12.1.5 擴展案例:進一步考察多項式迴歸
12.1.6 添加點:points()函數
12.1.7 添加圖例:legend()函數
12.1.8 添加文字:text()函數
12.1.9 精確定位:locator()函數
12.1.10 保存圖形
12.2 定製圖形
12.2.1 改變字符大小:cex選項
12.2.2 改變坐標軸的範圍:xlim和ylim選項
12.2.3 添加多邊形:polygon()函數
12.2.4 平滑散點:lowess()和loess()函數
12.2.5 繪製具有顯式錶達式的函數
12.2.6 擴展案例:放大麯綫的一部分
12.3 將圖形保存到文件
12.3.1 R圖形設備
12.3.2 保存已顯示的圖形
12.3.3 關閉R圖形設備
12.4 創建三維圖形
第13章 調試
13.1 調試的基本原則
13.1.1 調試的本質:確認原則
13.1.2 從小處著手
13.1.3 模塊化的、自頂嚮下的調試風格
13.1.4 反漏洞
13.2 為什麼要使用調試工具
13.3 使用R的調試工具
13.3.1 利用debug()和browser()函數進行逐步調試
13.3.2 使用瀏覽器命令
13.3.3 設置斷點
13.3.4 使用trace()函數進行追蹤
13.3.5 使用traceback()和debugger()函數對崩潰的程序進行檢查
13.3.6 擴展案例:兩個完整的調試會話
13.4 更方便的調試工具
13.5 在調試模擬數據的代碼時請確保一緻性
13.6 語法和運行時錯誤
13.7 在R上運行GDB
第14章 性能提升:速度和內存
14.1 編寫快速的R代碼
14.2 可怕的for循環
14.2.1 用嚮量化提升速度
14.2.2 擴展案例:在濛特卡羅模擬中獲得更快的速度
14.2.3 擴展案例:生成冪次矩陣
14.3 函數式編程和內存問題
14.3.1 嚮量賦值問題
14.3.2 改變時拷貝
14.3.3 擴展案例:避免內存拷貝
14.4 利用Rprof()來尋找代碼的瓶頸
14.4.1 利用Rprof()來進行監視
14.4.2 Rprof()的工作原理
14.5 字節碼編譯
14.6 內存無法裝下數據怎麼辦
14.6.1 分塊
14.6.2 利用R軟件包來進行內存管理
第15章 R與其他語言的接口
15.1 編寫能被R調用的C/C++函數
15.1.1 R與C/C++交互的預備知識
15.1.2 例子:提取方陣的次對角綫元素
15.1.3 編譯和運行程序
15.1.4 調試R/C程序
15.1.5 擴展案例:預測離散取值的時間序列
15.2 從Python調用R
15.2.1 安裝RPy
15.2.2 RPy語法
第16章 R語言並行計算
16.1 共同外鏈問題
16.2 snow包簡介
16.2.1 運行snow代碼
16.2.2 分析snow代碼
16.2.3 可以獲得多少倍的加速
16.2.4 擴展案例:K均值聚類
16.3 藉助於C
16.3.1 利用多核機器
16.3.2 擴展案例:利用OpenMP解決共同外鏈問題
16.3.3 運行OpenMP代碼
16.3.4 OpenMP代碼分析
16.3.5 其他OpenMP指令
16.3.6 GPU編程
16.4 普遍的性能考慮
16.4.1 開銷的來源
16.4.2 簡單並行程序,以及那些不簡單的
16.4.3 靜態和動態任務分配
16.4.4 軟件煉金術:將一般的問題轉化為簡單並行問題
16.5 調試R語言並行計算的代碼
附錄A 安裝R
附錄B 安裝和使用包
前言/序言
緻謝
本書很大程度上得益於很多人的幫助和支持。
首先,也是最重要的,我必須感謝技術審稿人Hadley Wickham先生,他的成名作是ggplot2和plyr這兩個包。我曾嚮No Starch齣版社推薦過Hadley,因為除瞭這兩個包之外,他開發的其他包在CRAN(R用戶貢獻的代碼庫)上也備受歡迎,可說是經驗豐富。正如我期待的那樣,Hadley的很多評論為本書增色不少,尤其是他對某些代碼示例的評論,通常他都這樣開頭:“我在想,如果你這麼寫會怎麼樣……”。有時這些評論會導緻原本隻帶有一兩個版本代碼的例子變得要用兩三種甚至更多種不同方式來實現編程目的,這樣可以比較不同方法的優點和缺點,我相信讀者會因此受到啓發。
非常感謝Jim Porzak,他是灣區R用戶小組(Bay Area useR Group, BARUG的聯閤創始人,在我寫這本書時他曾多次鼓勵我。說起BARUG,我必須感謝Jim和另一位聯閤創始人Mike Driscoll,感謝他們創建瞭這個充滿活力而又富有啓發性的論壇。在BARUG,介紹R語言精妙應用的演講者們經常讓我感覺寫這本書是個很有價值的項目。BARUG也得益於Revolution Analytics公司的資助以及該公司員工David Smith和Joe Rickert付齣的時間、精力,以及奇妙的想法。
Jay Emerson和Mike Kane,CRAN上備受贊譽的bigmemory包的作者,他們通讀瞭第16章的早期文稿,並給齣瞭極富價值的評論。
John Chambers(S語言的締造者,而S語言是R語言的前身)和Martin Morgan提供瞭關於R內核的建議,這對我在第14章討論R的性能問題有很大幫助。
7.8.4節涉及瞭一個在編程社區很有爭議的主題——全局變量的使用。為瞭有一個更廣闊的視角,我徵求瞭幾位專傢的意見,特彆是R核心小組的成員Thomas Lumley和加州大學戴維斯分校計算機科學學院的Sean Davis。當然,這並不意味著他們認可瞭我在這一節的觀點,不過他們的評論非常有用。
在本項目的前期,我寫瞭份非常粗糙的(也是非常不完整的)草稿以供公眾評論,後來Ramon Diaz-Uriarte、Barbara F。 La Scala、Jason Liao以及我的老朋友Mike Hannon給瞭我很有幫助的反饋。我的女兒Laura,一名工科學生,閱讀瞭前麵部分章節並給齣瞭一些建議,使得本書得以完善。
我自己的CRAN項目以及與R相關的研究(有些成為瞭本書的示例)得益於許多人的建議、反饋和(或)鼓勵,特彆是Mark Bravington、Stephen Eglen、Dirk Eddelbuett、Jay Emerson、Mike Kane、Gary King、Duncan Murdoch和Joe Rickert。
R核心小組成員Duncan Temple Lang和我在同一個機構——加州大學戴維斯分校(UCD)。盡管我們在不同的係,以前也沒有太多接觸,但是這本書也得益於他在這個校園。他幫助UCD創造瞭一種廣泛認可R的文化氛圍,這讓我能夠很容易地嚮係裏證明我用大量的時間寫這本書是有價值的。
這本書是我跟No Starch齣版社閤作
華章科技:R語言編程藝術 [The Art of R Programming] 下載 mobi epub pdf txt 電子書
評分
☆☆☆☆☆
很好
評分
☆☆☆☆☆
印刷差 包裝爛 還髒!
評分
☆☆☆☆☆
比較基礎的R語言編程書目
評分
☆☆☆☆☆
很好,隻是現在京東快遞都不送貨上門瞭嗎?竟然直接放在快遞櫃。
評分
☆☆☆☆☆
值!值!值!很好的書,正版價格也劃算,滿意!讀書可以使自己的知識得到積纍,君子學以聚之。總之,愛好讀書是好事。讓我們都來讀書吧。 \N其實讀書有很多好處,就等有心人去慢慢發現. 最大的好處是可以讓你有屬於自己的本領靠自己生存。 \N讓你的生活過得更充實,學習到不同的東西。高爾基先生說過:“書籍是人類進步的階梯。”書還能帶給你許多重要的好處。 \N\N多讀書,可以讓你覺得有許多的寫作靈感。可以讓你在寫作文的方法上用的更好。在寫作的時候,我們往往可以運用一些書中的好詞好句和生活哲理。讓彆人覺得你更富有文采,美感。 \N\N多讀書,可以讓你全身都有禮節。俗話說:“第一印象最重要。”從你留給彆人的第一印象中,就可以讓彆人看齣你是什麼樣的人。所以多讀書可以讓人感覺你知書答禮,頗有風度。 \N\N多讀書,可以讓你多增加一些課外知識。培根先生說過:“知識就是力量。”不錯,多讀書,增長瞭課外知識,可以讓你感到渾身充滿瞭一股力量。這種力量可以激勵著你不斷地前進,不斷地成長。從書中,你往往可以發現自己身上的不足之處,使你不斷地改正錯誤,擺正自己前進的方嚮。所以,書也是我們的良師益友。 \N\N多讀書,可以讓你變聰明,變得有智慧去戰勝對手。書讓你變得更聰明,你就可以勇敢地麵對睏難。讓你用自己的方法來解決這個問題。這樣,你又嚮你自己的人生道路上邁齣瞭一步。 \N\N多讀書,也能使你的心情便得快樂。讀書也是一種休閑,一種娛樂的方式。讀書可以調節身體的血管流動,使你身心健康。所以在書的海洋裏遨遊也是一種無限快樂的事情。用讀書來為自己放鬆心情也是一種十分明智的。 \N\N讀書能陶冶人的情操,給人知識和智慧。所以,我們應該多讀書,為我們以後的人生道路打下好的、紮實的基礎!讀書養性,讀書可以陶冶自己的性情,使自己溫文爾雅,具有書捲氣;讀書破萬捲,下筆如有神,多讀書可以提高寫作能力,寫文章就纔思敏捷;舊書不厭百迴讀,熟讀深思子自知,讀書可以提高理解能力,隻要熟讀深思,你就可以知道其中的道理瞭;感受世界的不同。 \N\N不需要有生存的壓力,必競都是有父母的負擔。 雖然現在讀書的壓力很大,但請務必相信你是幸福的。 \N在我們國傢還有很多孩子連最基本的教育都沒辦法享受的。 \N所以,你現在不需要總結,隨著年齡的成長,你會明白的,還是有時間多學習一下。 \N古代的那些文人墨客,都有一個相同的愛好-------讀書.書是人類進步的階梯.讀書是每個人都做過的事情,有許多人愛書如寶,手不釋捲,因為一本好書可以影響一個人的一生.讀一些有關寫作方麵的書籍,能使我們改正作文中的一些不足,從而提高瞭我們的習作水平.讀書的好處還有一點,就是為我們以後的生活做準備.那麼,讀書有哪些好處呢?1讀書可以豐富我們的知識量.多讀一些好書,能讓我們瞭解許多科學知識.2讀書可以讓我們擁有韆裏眼.俗話說的好;秀纔不齣門,便知天下事;運籌帷幄,決勝韆裏.多讀一些書,能通古今,通四方,很多事都可以未蔔先知.3讀書可以讓我們勵誌.讀一些有關曆史的書籍,可以激起我們的愛國熱情.4讀書能提高我們的寫作水書籍是我們生活的導航,它教會我們去尊重他人也尊重自己,讓貧乏和平庸遠離我們。每當茶餘飯後咀嚼著書籍中優美的文字,欣賞一個個動人的故事,都會讓有所感悟。自從讀瞭該書之後,我是收益頗豐, %D%A %D%A%D%A%D%A 從居傢、招財、商業、健康、情感等各個方麵風水的應用到八卦乾坤、遊年八宅、九星飛泊……《中國傳統風水智慧一本通(權威修訂典藏版)》是目前最全麵、最深入、最生動鮮活的風水圖文大百科全書。本書以L800個問答的形式全麵呈現深奧、玄妙的風水世界。%A 適閤所有對風水感興趣的讀者,既可以全麵掌握風水知識,也可以根據個人需要把本書作為一本居傢必備的百科全書,解決自己所有關於運勢、風水的疑問。%D%A%D%A,寫得不錯,打開一本好書,迎麵撲鼻的是清香而深邃的氣息,仿佛是那新翻耕的泥土散發齣馨香。在若有若無的音樂聲中,我可以隨意想象,想象自己是藍天,一望無際;想象自己是月夜,寂靜美麗;想象自己是海浪,澎湃不息;讀小說,我會隨著主人公跌宕起伏的命運或喜或悲;讀抒情的散文詩歌,我會在作者淡淡的憂鬱中品味他們對生命、生活、自然的態度;翻閱輕鬆詼諧的書,我可以盡情地放聲大笑
評分
☆☆☆☆☆
這本書另一個缺點在於,它沒有提供一套可供練習的數據樣本。書中屢次涉及到的一些文件,並沒有提供給讀者(我曾嘗試email給作者索取數據文件,但也沒有得到迴復),而Kindle版(尤其是我在Mac上用Kindle來閱讀)對於代碼的排版也相當混亂——這不是書本身內容的問題,但確實讓我不怎麼想讀那些代碼瞭。
評分
☆☆☆☆☆
寫得蠻好的
評分
☆☆☆☆☆
得唱好,很不錯
評分
☆☆☆☆☆
好,尤其是優化代碼部分