《R語言入門與實踐》循序漸進、由淺入深地講解了R語言開發(fā)技術(shù),并通過具體實例講解了R語言的各個知識點。本書共分12章,其中第1~2章是基礎知識部分,講解了R語言開發(fā)的基礎知識,包括R語言基礎、R語言語法基礎;第3~6章是核心語法部分,分別講解了流程控制語句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、包和環(huán)境空間等知識,這部分內(nèi)容介紹的是R語言中最重要的語法知識;第7~10章是進階提高部分,分別講解了數(shù)據(jù)輸入和導出、數(shù)據(jù)處理、繪制可視化圖、R語言和人工智能等知識,這部分內(nèi)容是R語言開發(fā)技術(shù)的重點和核心;第11章和第12章是綜合實戰(zhàn)部分,講解了兩個大型案例的實現(xiàn)過程,介紹了R語言在大型商業(yè)項目中的應用。
《R語言入門與實踐》不僅可以作為R語言初學者的學習用書,也適合有一定R語言基礎的讀者學習,還可以作為高等院校相關(guān)專業(yè)的教學用書和培訓機構(gòu)的教材。
《R語言入門與實踐》系統(tǒng)地介紹了R語言的基礎知識,并通過具體案例演練將其應用于實際場景中。無論你是初學者,還是有一定經(jīng)驗的用戶,本書都能幫助你快速掌握R語言的使用技巧,并通過實戰(zhàn)案例幫助你輕松掌握R語言。此外,本書還為讀者提供豐富的學習素材,主要有視頻講解、PPT課件、源代碼等,讀者可掃描書中的二維碼獲取。
從你開始學習編程的那一刻起,就注定了以后所要走的路從編程學習者開始,可能會依次經(jīng)歷實習生、程序員、軟件工程師、架構(gòu)師、CTO等職位的磨礪;當你站在職位頂峰的位置驀然回首時,會發(fā)現(xiàn)自己的成功并不是偶然,在程序員的成長之路上會有不斷修改代碼、尋找并解決Bug、不停測試程序的經(jīng)歷。不可否認的是,只要你在自己的開發(fā)生涯中穩(wěn)扎穩(wěn)打,并且善于學習和總結(jié),最終將會得到可喜的收獲。
選擇一本合適的書
對于一名程序開發(fā)初學者來說,究竟如何學習才能提高自己的開發(fā)技術(shù)呢?關(guān)鍵是選擇合適的圖書進行學習。但是,市面上許多面向初學者的編程書籍中的大多數(shù)篇幅都是講解基礎知識,多偏向于理論,讀者學習以后面對實戰(zhàn)項目時還是無從下手。如何實現(xiàn)從理論到項目實戰(zhàn)的平滑過渡,是初學者需要迫切解決的問題,為此,作者特意編寫了本書。
本書的特色
1.以從入門到精通的模式構(gòu)建內(nèi)容,讓讀者入門容易
為了使讀者能夠完全看懂本書的內(nèi)容,本書遵循從入門到精通基礎類圖書的寫法,循序漸進地講解R語言的基本知識。
2.破解語言難點,幫助讀者繞過學習中的誤區(qū)
本書通過詳細講解基本知識點,讓讀者理解并繞過學習中的誤區(qū),知其然又知其所以然。
3.視頻講解,降低學習難度
書中每一章均提供圖文并茂的教學視頻,這些視頻能夠引導初學者快速入門,增強學習的信心,從而快速理解所學的知識。
4.貼心提示和注意事項提醒
本書根據(jù)需要在文中安排了很多注意小板塊,讓讀者可以在學習過程中更輕松地理解相關(guān)知識點及概念,更快地掌握個別技術(shù)的應用技巧。
5.源程序 視頻 PPT豐富的學習資料,讓學習更輕松
本書的篇幅有限,不可能囊括基礎 范例 項目案例的全部內(nèi)容,所以配備了學習資源來輔助實現(xiàn)。在本書的學習資源中不但有全書的源代碼,而且還精心制作了實例講解視頻、知識點講解視頻等,讀者可以掃描書中提供的二維碼觀看視頻,也可以掃描下方的二維碼獲取源代碼和PPT課件。
6.QQ群實現(xiàn)教學互動,形成互幫互學的朋友圈
本書作者為了方便給讀者答疑,特提供了QQ群進行技術(shù)支持,并且隨時在線與讀者互動。讓大家在互學互幫中形成一個良好的學習編程氛圍。
本書的讀者對象
? 初學編程的自學者 編程愛好者
? 大中專院校的教師和學生 ? 相關(guān)培訓機構(gòu)的教師和學員
? 做畢業(yè)設計的學生 ?初、中級程序開發(fā)人員
? 軟件測試人員 ?參加實習的初級程序員
致謝
本書在編寫過程中,得到了清華大學出版社編輯的大力支持,正是各位編輯的求實、耐心和效率,才使得本書能夠在這么短的時間內(nèi)出版。另外,也十分感謝我的家人給予的巨大支持。由于本人水平有限,書中紕漏之處在所難免,懇請廣大讀者提出意見或建議,以便修訂并使之更臻完善。
最后感謝您購買本書,希望本書能成為您編程路上的領航者,祝您閱讀快樂!
編 者
張婷,畢業(yè)于山東大學,計算機碩士,精通多種開發(fā)語言,多年來一直從事人工智能、數(shù)據(jù)通信、數(shù)據(jù)采集、網(wǎng)絡傳輸、數(shù)據(jù)分析等領域的工作,F(xiàn)就職于藥明生物,從事于生物分子的數(shù)據(jù)分析和深度學習預測的工作。
第1章 R語言基礎 1
1.1 R語言的發(fā)展歷程 2
1.2 R語言的特點 2
1.3 安裝R語言運行環(huán)境 3
1.3.1 Windows系統(tǒng)安裝R語言 3
1.3.2 在Linux系統(tǒng)和macOS系統(tǒng)安裝R語言 6
1.4 R語言開發(fā)工具:R GUI 7
1.4.1 命令行方式運行R程序 7
1.4.2 文件方式運行R程序 8
1.5 R語言開發(fā)工具:RStudio 9
1.5.1 安裝RStudio 10
1.5.2 RStudio界面 12
1.5.3 使用RStudio開發(fā)R程序 13
1.6 認識第一個R程序:石頭、剪刀、布游戲 15
1.6.1 新建R工程 15
1.6.2 編寫程序文件 16
第2章 R語言語法基礎 19
2.1 注釋 20
2.2 標識符和關(guān)鍵字 21
2.2.1 標識符 21
2.2.2 關(guān)鍵字 22
2.3 常量和變量 23
2.3.1 常量 23
2.3.2 變量 25
2.4 數(shù)據(jù)類型 27
2.4.1 數(shù)據(jù)的分類 27
2.4.2 整型 29
2.4.3 實數(shù)型 29
2.4.4 邏輯型 30
2.4.5 復數(shù)型 30
2.4.6 字符串型 31
2.4.7 因子型 32
2.5 向量 33
2.5.1 創(chuàng)建向量 33
2.5.2 訪問向量中的元素 34
2.5.3 修改向量中的元素 35
2.5.4 向向量中添加新元素 36
2.5.5 向量運算 37
2.5.6 向量統(tǒng)計 37
2.5.7 類型轉(zhuǎn)換 39
2.6 運算符和表達式 42
2.6.1 算術(shù)運算符 43
2.6.2 關(guān)系運算符 44
2.6.3 邏輯運算符 45
2.6.4 賦值運算符 46
2.6.5 其他運算符 47
2.6.6 運算符的優(yōu)先級 49
第3章 流程控制語句 51
3.1 條件語句 52
3.1.1 條件語句介紹 52
3.1.2 if語句 53
3.1.3 if...else語句 53
3.1.4 if…else if…else語句 54
3.1.5 switch 語句 56
3.2 循環(huán)語句 58
3.2.1 repeat語句 58
3.2.2 while語句 59
3.2.3 for語句 60
3.3 循環(huán)控制語句 61
3.3.1 break 語句 61
3.3.2 next 語句 62
第4章 函數(shù) 65
4.1 函數(shù)基礎 66
4.1.1 函數(shù)的特征和好處 66
4.1.2 R 語言函數(shù)和其他編程語言函數(shù)的區(qū)別 67
4.2 定義函數(shù) 67
4.2.1 定義函數(shù)的語法格式 67
4.2.2 函數(shù)的參數(shù) 68
4.2.3 函數(shù)的返回值 70
4.3 函數(shù)調(diào)用 72
4.3.1 使用位置參數(shù) 72
4.3.2 使用關(guān)鍵字參數(shù) 73
4.3.3 使用默認參數(shù) 74
4.3.4 存儲函數(shù)返回值 76
4.4 內(nèi)置函數(shù) 77
4.4.1 數(shù)學和統(tǒng)計函數(shù) 78
4.4.2 字符和字符串處理函數(shù) 79
4.4.3 文件操作函數(shù) 82
4.4.4 概率分布函數(shù) 86
4.4.5 日期和時間函數(shù) 89
第5章 數(shù)據(jù)結(jié)構(gòu) 95
5.1 矩陣 96
5.1.1 創(chuàng)建和訪問矩陣 96
5.1.2 轉(zhuǎn)置操作 98
5.1.3 求和、平均值和總和 99
5.1.4 行和列操作 100
5.1.5 矩陣運算 101
5.1.6 索引和切片 103
5.2 列表 104
5.2.1 創(chuàng)建和訪問列表 104
5.2.2 更新列表元素 107
5.2.3 遍歷列表 109
5.3 數(shù)組 111
5.3.1 創(chuàng)建數(shù)組 112
5.3.2 訪問數(shù)組 113
5.3.3 修改數(shù)組元素 115
5.3.4 數(shù)組運算 115
5.3.5 數(shù)組轉(zhuǎn)置 116
5.3.6 數(shù)組重塑 117
5.3.7 數(shù)組合并 118
5.3.8 數(shù)組排序 120
5.3.9 數(shù)組切片 121
5.4 數(shù)據(jù)框 121
5.4.1 創(chuàng)建數(shù)據(jù)框 122
5.4.2 訪問數(shù)據(jù)框 123
5.4.3 添加新列 127
5.4.4 修改數(shù)據(jù)框元素 128
5.4.5 聚合操作 130
5.4.6 排序 131
5.5 因子 133
5.5.1 創(chuàng)建因子 133
5.5.2 因子水平標簽 134
5.5.3 生成因子水平 135
5.6 數(shù)據(jù)表 137
5.6.1 創(chuàng)建數(shù)據(jù)表 137
5.6.2 對數(shù)據(jù)表的操作 139
5.7 時間序列 143
5.7.1 創(chuàng)建時間序列 143
5.7.2 時間序列的可視化 145
5.7.3 時間序列的索引和切片 147
5.7.4 時間序列的分析和建模 149
5.7.5 時間序列的統(tǒng)計性質(zhì) 150
第6章 包和環(huán)境空間 153
6.1 包(Package) 154
6.1.1 R語言包的管理 154
6.1.2 自定義R包 157
6.2 環(huán)境空間 159
6.2.1 環(huán)境空間的種類 159
6.2.2 環(huán)境空間的特征 160
6.2.3 使用全局環(huán)境 160
6.2.4 使用函數(shù)環(huán)境 162
6.2.5 使用用戶定義的環(huán)境 164
6.2.6 使用包環(huán)境 165
6.2.7 使用臨時環(huán)境 166
第7章 數(shù)據(jù)輸入和導出 169
7.1 數(shù)據(jù)輸入和導出介紹 170
7.2 使用鍵盤輸入數(shù)據(jù) 170
7.3 操作CSV文件 172
7.3.1 CSV文件的優(yōu)點 172
7.3.2 讀取CSV文件 173
7.3.3 寫入CSV文件 174
7.3.4 數(shù)據(jù)轉(zhuǎn)換和處理 175
7.4 Excel文件 178
7.4.1 R語言和Excel文件 178
7.4.2 使用包readxl 179
7.4.3 使用包openxlsx 180
7.5 XML文件 182
7.5.1 使用包XML 182
7.5.2 使用包xml2 185
7.6 JSON文件 187
7.6.1 JSON包 187
7.6.2 使用包jsonlite 188
7.6.3 使用包RJSONIO 190
7.6.4 使用包tidyjson 192
7.7 MySQL數(shù)據(jù)庫連接 193
7.7.1 和MySQL相關(guān)的包 193
7.7.2 使用包RMySQL 194
7.7.3 使用包RMariaDB 195
7.7.4 使用包DBI 197
7.7.5 包dplyr和包dbplyr 198
7.8 從網(wǎng)頁抓取數(shù)據(jù) 200
7.8.1 R語言和網(wǎng)絡爬蟲 200
7.8.2 使用包rvest抓取數(shù)據(jù) 201
7.8.3 使用包httr抓取數(shù)據(jù) 202
7.8.4 使用包XML抓取數(shù)據(jù) 204
7.8.5 使用包jsonlite抓取數(shù)據(jù) 205
第8章 數(shù)據(jù)處理 207
8.1 R語言和數(shù)據(jù)處理 208
8.1.1 R語言的優(yōu)勢 208
8.1.2 數(shù)據(jù)處理和數(shù)據(jù)分析的
區(qū)別 209
8.2 內(nèi)置數(shù)據(jù)處理函數(shù) 209
8.2.1 查看、篩選和編輯數(shù)據(jù) 209
8.2.2 合并數(shù)據(jù) 212
8.2.3 分組和匯總 215
8.2.4 排序 217
8.2.5 轉(zhuǎn)換 218
8.3 apply函數(shù)族 220
8.3.1 apply函數(shù)族中的函數(shù) 220
8.3.2 函數(shù)apply() 220
8.3.3 函數(shù)lapply() 222
8.3.4 函數(shù)sapply() 223
8.3.5 函數(shù)vapply() 224
8.3.6 函數(shù)mapply() 225
第9章 繪制可視化圖 229
9.1 R語言繪圖系統(tǒng) 230
9.1.1 常用的繪圖包 230
9.1.2 基本繪圖函數(shù)plot() 230
9.2 單變量繪圖 232
9.2.1 繪制直方圖 232
9.2.2 繪制條形圖 236
9.2.3 繪制餅形圖 240
9.2.4 繪制箱線圖 242
9.2.5 繪制密度圖 244
9.3 雙變量繪圖 247
9.3.1 繪制雙變量條形圖 248
9.3.2 繪制雙變量散點圖 252
9.3.3 繪制雙變量折線圖 255
9.3.4 繪制雙變量箱線圖 258
9.4 繪制多變量圖 261
9.4.1 繪制多變量氣泡圖 261
9.4.2 繪制多變量熱力圖 265
9.5 文件數(shù)據(jù)的可視化 268
9.5.1 CSV文件數(shù)據(jù)的可視化 268
9.5.2 Excel文件數(shù)據(jù)的可視化 270
9.5.3 XML文件數(shù)據(jù)的可視化 271
9.5.4 JSON文件數(shù)據(jù)的可視化 273
9.5.5 MySQL數(shù)據(jù)庫數(shù)據(jù)的可視化 275
第10章 R語言和人工智能 277
10.1 機器學習 278
10.1.1 機器學習相關(guān)包 278
10.1.2 包caret 278
10.1.3 包randomForest 285
10.1.4 包e1071 288
10.1.5 包glmnet 291
10.1.6 包xgboost 293
10.2 深度學習 294
10.2.1 包keras 294
10.2.2 包tensorflow 298
第11章 心力衰竭數(shù)據(jù)分析系統(tǒng) 303
11.1 背景介紹 304
11.1.1 數(shù)據(jù)分析在醫(yī)療行業(yè)的作用 304
11.1.2 心力衰竭臨床記錄介紹 304
11.2 需求分析 305
11.3 系統(tǒng)介紹 306
11.3.1 系統(tǒng)功能模塊 306
11.3.2 系統(tǒng)模塊結(jié)構(gòu) 307
11.4 技術(shù)分析 307
11.4.1 Web包Shiny 307
11.4.2 交互式表格包DT 308
11.4.3 集成可視化包tidyverse 308
11.4.4 圖形排列包gridExtra 309
11.5 UI界面 309
11.5.1 導入包 309
11.5.2 設計UI 310
11.6 Server服務器端 313
11.6.1 準備工作 313
11.6.2 數(shù)據(jù)預處理 314
11.6.3 數(shù)據(jù)可視化 316
11.6.4 數(shù)據(jù)導出 318
11.7 調(diào)試運行 319
第12章 基于機器學習的患者再入院預測分析系統(tǒng) 323
12.1 背景介紹 324
12.2 需求分析 324
12.3 系統(tǒng)分析 325
12.4 系統(tǒng)介紹 326
12.4.1 系統(tǒng)功能介紹 326
12.4.2 系統(tǒng)模塊結(jié)構(gòu) 326
12.5 技術(shù)分析 327
12.5.1 dplyr:數(shù)據(jù)預處理 327
12.5.2 psych:心理學和社會科學研究 328
12.5.3 ROSE:不平衡處理 329
12.5.4 caret模型訓練和評估 330
12.6 數(shù)據(jù)處理 330
12.6.1 導入數(shù)據(jù)集 331
12.6.2 數(shù)據(jù)預處理 333
12.7 第一方案 342
12.7.1 劃分訓練集和測試集 342
12.7.2 數(shù)據(jù)集平衡 343
12.7.3 交叉驗證 343
12.7.4 模型比較 347
12.8 第二方案 349
12.8.1 數(shù)據(jù)集拆分和數(shù)據(jù)平衡 349
12.8.2 邏輯回歸模型擬合和預測 350
12.8.3 計算處理 350
12.8.4 邏輯回歸模型的擬合、預測和評估 351
12.8.5 使用交叉驗證方法訓練決策樹模型 352
12.8.6 使用交叉驗證方法訓練隨機森林模型 353
12.8.7 實現(xiàn)樸素貝葉斯模型 354
12.9 模型訓練和評估 356
12.9.1 數(shù)據(jù)預處理 356
12.9.2 邏輯回歸模型的訓練和評估 357
12.9.3 決策樹模型的訓練和評估 358
12.9.4 隨機森林模型的訓練和評估 359
12.9.5 樸素貝葉斯模型的訓練和評估 360
12.10 結(jié)論 361