高級R語言編程指南

高級R語言編程指南

作者: 哈德利·威克漢姆 (Hadley Wickham)
出版社: 機械工業
出版在: 2016-06-01
ISBN-13: 9787111540670
ISBN-10: 7111540670
裝訂格式: 平裝
總頁數: 297 頁





內容描述


<內容簡介>
本書從R語言的基礎知識入手,深入介紹了R函數式編程、R語言的面向對象特性、程序的調試、代碼優化和性能調優。同時,本書也介紹了R語言如何與HTML和LaTex語言結合的技術,介紹了高性能計算以及C語言編程接口。

<目錄>
推薦序譯者序第1章簡介1 1.1本書的目標讀者2 1.2通過本書你可以學到什麼2 1.3元技術3 1.4推薦閱讀3 1.5獲取幫助4 1.6致謝4 1.7約定5 1.8聲明5 第一部分基礎知識第2章數據結構8 2.1向量9 2.1.1原子向量9 2.1.2列表11 2.1.3練習12 2.2屬性12 2.2.1因子13 2.2.2練習15 2.3矩陣和數組15 2.4數據框17 2.4 .1數據框構建17 2.4.2類型判斷與強制轉換18 2.4.3合併數據框18 2.4.4特殊列19 2.4.5練習19 2.5答案19 第3章子集選取21 3.1數據類型22 3.1.1原子向量22 3.1.2列表23 3.1.3矩陣和數組23 3.1.4數據框24 3.1.5S3對象25 3.1.6S4對象25 3.1.7練習25 3.2子集選取運算符26 3.2.1簡化與保留26 3.2 .2$27 3.2.3缺失/超出索引邊界(越界引用)28 3.2.4練習28 3.3子集選取與賦值29 3.4應用30 3.4.1查詢表(字符子集選取)30 3.4.2人工比對與合併(整數子集選取)30 3.4.3隨機樣本/自助法(整數子集選取)31 3.4.4排序(整數子集選取)31 3.4.5展開重複記錄(整數子集選取)32 3.4.6剔除數據框中某些列(字符子集選取)33 3.4.7根據條件選取行(邏輯子集選取)33 3.4.8布爾代數與集合(邏輯和整數子集選取)34 3.4.9練習35 3.5答案35 第4章常用函數與數據結構36 4.1基礎函數36 4.2常見數據結構37 4.3統計函數38 4.4使用R39 4.5I/O函數39 第5章R編程風格指南40 5.1符號和名字40 5.1.1文件名40 5.1.2對象名40 5.2語法41 5.2.1空格41 5.2.2大括號42 5.2.3行的長度42 5.2.4縮進42 5.2.5賦值43 5.3結構43 第6章函數44 6.1函數組成部分45 6.1.1原函數45 6.1.2練習46 6.2詞法作用域46 6.2.1名字屏蔽47 6.2.2函數與變量48 6.2.3重新開始48 6.2.4動態查找49 6.2.5練習50 6.3每個運算都是一次函數調用50 6.4函數參數51 6.4.1函數調用52 6.4.2使用參數列表來調用函數53 6.4.3默認參數和缺失參數53 6.4.4惰性求值54 6.4.5.. .參數56 6.4.6練習57 6.5特殊調用57 6.5.1中綴函數57 6.5.2替換函數58 6.5.3練習59 6.6返回值59 6.6.1退出時61 6.6.2練習62 6.7答案62 第7章面向對象編程指南64 7.1基礎類型65 7.2S366 7.2.1認識對象、泛型函數和方法66 7.2.2定義類和創建對象67 7.2.3創建新方法和泛型函數69 7.2.4方法分派69 7.2.5練習71 7.3S471 7.3.1識別對象、泛型函數和方法72 7.3.2定義類並創建對象73 7.3.3創建新方法和泛型函數74 7.3.4方法分派74 7.3.5練習75 7.4RC75 7.4.1定義類和創建對象75 7.4.2識別類和方法77 7.4.3方法分派77 7.4.4練習77 7.5選擇一個系統77 7.6答案78 第8章環境79 8.1環境基礎79 8.2環境遞歸83 8.3函數環境85 8.3.1封閉環境85 8.3.2綁定環境86 8.3.3執行環境87 8.3.4調用環境88 8.3.5練習90 8.4綁定名字和數值90 8.5顯式環境92 8.5.1避免複製93 8.5.2軟件包狀態93 8.5.3模擬hashmap93 8.6答案94 第9章調試、條件處理和防禦性編程95 9.1調試技巧96 9.2調試工具97 9.2.1確定調用順序98 9.2.2查看錯誤99 9.2.3查看任意代碼100 9.2.4調用棧:traceback()、where和recover()100 9.2.5其他類型的故障101 9.3條件處理102 9.3.1使用try來忽略錯誤102 9.3.2使用tryCatch ()處理條件103 9.3.3withCallingHandlers()105 9.3.4自定義信號類106 9.3.5練習107 9.4防禦性編程107 9.5答案109 第二部分函數式編程第10章函數式編程112 10.1動機112 10.2匿名函數116 10.3閉包117 10.3.1函數工廠119 10.3.2可變狀態119 10.3.3練習120 10.4函數列表120 10.4.1將函數列表移到全局環境中122 10.4.2練習123 10.5案例研究:數值積分124 第11章泛函127 11.1第一個泛函:lapply()128 11.1.1循環模式129 11.1.2練習130 11.2for循環泛函:lapply()的相似函數131 11.2.1向量輸出:sapply和vapply131 11.2.2多重輸入:Map(和mapply)133 11.2.3滾動計算134 11.2.4並行化135 11.2.5練習136 11.3操作矩陣和數據框137 11.3.1矩陣和數組運算137 11.3.2組應用138 11.3.3plyr添加包139 11.3.4練習140 11.4列表操作140 11.4.1Reduce()140 11.4.2判斷泛函141 11.4.3練習141 11.5數學泛函142 11.6應該保留的循環143 11.6.1原位修改143 11.6.2遞歸關係144 11.6.3while循環144 11.7創建一個函數係列145 第12章函數運算符149 12.1行為函數運算符150 12.1.1緩存152 12.1.2捕獲函數調用153 12.1.3惰性155 12.1.4練習155 12.2輸出函數運算符156 12.2.1簡單修飾156 12.2.2改變函數的輸出157 12.2.3練習158 12.3輸入函數運算符159 12.3.1預填充函數參數:局部函數應用159 12.3. 2改變輸入類型159 12.3.3練習160 12.4組合函數運算符161 12.4.1函數複合161 12.4.2邏輯判斷和布爾代數163 12.4.3練習163 第三部分語言計算第13章非標準計算166 13.1表達式獲取167 13.2在子集中進行非標準計算168 13.3作用域問題171 13.4從其他函數調用173 13.5替換175 13.5.1為替換提供應急方案177 13.5.2捕獲未計算的表達式177 13.5.3練習178 13.6非標準計算的缺點178 第14章表達式180 14.1表達式的結構180 14.2名字183 14.3調用184 14.3.1修改調用185 14.3.2根據調用的元素來創建調用186 14.3.3練習186 14.4捕獲當前調用187 14.5成對列表189 14.6解析與逆解析191 14.7使用遞歸函數遍歷抽象語法樹192 14.7.1尋找F和T193 14.7.2尋找通過賦值創建的所有變量194 14.7.3修改調用樹197 14.7.4練習198 第15章領域特定語言200 15.1HTML200 15.1.1目標201 15.1.2轉義202 15.1.3基本標籤函數203 15.1.4標籤函數204 15.1.5處理所有標籤205 15.1.6練習206 15.2LaTeX206 15.2 .1LaTeX數學206 15.2.2目標207 15.2.3to_math207 15.2.4已知符號207 15.2.5未知符號208 15.2.6已知函數209 15.2.7未知函數210 15.2.8練習211 第四部分性能第16章性能214 16.1R為什麼速度慢214 16.2微測試215 16.3語言性能216 16.3.1極端動態性216 16.3.2可變環境下的名字搜索218 16.3.3惰性求值開銷219 16.3.4練習219 16.4實現的性能220 16.4.1從數據框提取單一值220 16.4.2ifelse()、pmin()和pmax()220 16.4.3練習222 16.5其他的R實現222 第17章代碼優 ​​化225 17.1性能測試226 17.2改進性能229 17.3組織代碼229 17.4有人已經解決了這個問題嗎230 17.5盡可能少做231 17.6向量化236 17.7避免複製237 17.8字節碼編譯238 17.9案例研究:t檢驗238 17.10並行化240 17.11其他技術241 第18章內存243 18.1對像大小243 18.2內存使用與垃圾回收246 18.3使用lineprof對內存進行性能分析248 18.4原地修改250 18.4.1循環252 18.4.2練習253 第19章使用Rcpp編寫高性能函數254 19.1開始使用C++255 19.1.1沒有輸入,標量輸出256 19.1.2標量輸入,標量輸出256 19.1.3向量輸入,標量輸出257 19.1.4向量輸入,向量輸出258 19.1.5矩陣輸入,向量輸出258 19.1.6使用sourceCpp259 19.1.7練習260 19.2屬性和其他類261 19.2.1列表和數據框262 19.2.2函數262 19.2.3其他類型263 19.3缺失值263 19.3.1標量263 19.3.2字符串265 19.3.3布爾型265 19.3.4向量265 19.3.5練習266 19.4Rcpp語法糖266 19.4.1算術和邏輯運算符266 19.4.2邏輯總結函數267 19.4.3向量視圖267 19.4.4其他有用的函數267 19.5STL268 19.5.1使用迭代器268 19.5.2算法269 19.5.3數據結構270 19.5.4向量270 19.5.5集合271 19.5.6圖272 19.5.7練習272 19.6案例研究272 19.6.1Gibbs採樣器273 19.6.2R向量化與C++向量化274 19.7在添加包中應用Rcpp275 19.8更多學習資源276 19.9致謝277 第20章R的C接口278 20.1從R中調用C函數279 20.2C數據結構280 20.3創建和修改向量281 20.3.1創建向量和垃圾回收281 20.3.2缺失值和非有限值282 20.3.3訪問向量數據283 20.3.4字符向量和列表284 20.3.5修改輸入284 20.3.6強制轉換標量285 20.3.7長向量285 20.4成對列表286 20.5輸入驗證287 20.6尋找一個函數的C源代碼289 索引292




相關書籍

Hands-On Data Visualization with Bokeh: Interactive web plotting for Python using Bokeh

作者 Kevin Jolly

2016-06-01

數據可視化之道:數據分析中的圖表製作思路與方法(全彩)

作者 林斌

2016-06-01

MATLABR2018a從入門到精通(升級版)

作者 魏鑫

2016-06-01