《R語(yǔ)言入門(mén)與實(shí)踐》循序漸進(jìn)、由淺入深地講解了R語(yǔ)言開(kāi)發(fā)技術(shù),并通過(guò)具體實(shí)例講解了R語(yǔ)言的各個(gè)知識(shí)點(diǎn)。本書(shū)共分12章,其中第1~2章是基礎(chǔ)知識(shí)部分,講解了R語(yǔ)言開(kāi)發(fā)的基礎(chǔ)知識(shí),包括R語(yǔ)言基礎(chǔ)、R語(yǔ)言語(yǔ)法基礎(chǔ);第3~6章是核心語(yǔ)法部分,分別講解了流程控制語(yǔ)句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、包和環(huán)境空間等知識(shí),這部分內(nèi)容介紹的是R語(yǔ)言中最重要的語(yǔ)法知識(shí);第7~10章是進(jìn)階提高部分,分別講解了數(shù)據(jù)輸入和導(dǎo)出、數(shù)據(jù)處理、繪制可視化圖、R語(yǔ)言和人工智能等知識(shí),這部分內(nèi)容是R語(yǔ)言開(kāi)發(fā)技術(shù)的重點(diǎn)和核心;第11章和第12章是綜合實(shí)戰(zhàn)部分,講解了兩個(gè)大型案例的實(shí)現(xiàn)過(guò)程,介紹了R語(yǔ)言在大型商業(yè)項(xiàng)目中的應(yīng)用。
《R語(yǔ)言入門(mén)與實(shí)踐》不僅可以作為R語(yǔ)言初學(xué)者的學(xué)習(xí)用書(shū),也適合有一定R語(yǔ)言基礎(chǔ)的讀者學(xué)習(xí),還可以作為高等院校相關(guān)專(zhuān)業(yè)的教學(xué)用書(shū)和培訓(xùn)機(jī)構(gòu)的教材。
《R語(yǔ)言入門(mén)與實(shí)踐》系統(tǒng)地介紹了R語(yǔ)言的基礎(chǔ)知識(shí),并通過(guò)具體案例演練將其應(yīng)用于實(shí)際場(chǎng)景中。無(wú)論你是初學(xué)者,還是有一定經(jīng)驗(yàn)的用戶,本書(shū)都能幫助你快速掌握R語(yǔ)言的使用技巧,并通過(guò)實(shí)戰(zhàn)案例幫助你輕松掌握R語(yǔ)言。此外,本書(shū)還為讀者提供豐富的學(xué)習(xí)素材,主要有視頻講解、PPT課件、源代碼等,讀者可掃描書(shū)中的二維碼獲取。
從你開(kāi)始學(xué)習(xí)編程的那一刻起,就注定了以后所要走的路從編程學(xué)習(xí)者開(kāi)始,可能會(huì)依次經(jīng)歷實(shí)習(xí)生、程序員、軟件工程師、架構(gòu)師、CTO等職位的磨礪;當(dāng)你站在職位頂峰的位置驀然回首時(shí),會(huì)發(fā)現(xiàn)自己的成功并不是偶然,在程序員的成長(zhǎng)之路上會(huì)有不斷修改代碼、尋找并解決Bug、不停測(cè)試程序的經(jīng)歷。不可否認(rèn)的是,只要你在自己的開(kāi)發(fā)生涯中穩(wěn)扎穩(wěn)打,并且善于學(xué)習(xí)和總結(jié),最終將會(huì)得到可喜的收獲。
選擇一本合適的書(shū)
對(duì)于一名程序開(kāi)發(fā)初學(xué)者來(lái)說(shuō),究竟如何學(xué)習(xí)才能提高自己的開(kāi)發(fā)技術(shù)呢?關(guān)鍵是選擇合適的圖書(shū)進(jìn)行學(xué)習(xí)。但是,市面上許多面向初學(xué)者的編程書(shū)籍中的大多數(shù)篇幅都是講解基礎(chǔ)知識(shí),多偏向于理論,讀者學(xué)習(xí)以后面對(duì)實(shí)戰(zhàn)項(xiàng)目時(shí)還是無(wú)從下手。如何實(shí)現(xiàn)從理論到項(xiàng)目實(shí)戰(zhàn)的平滑過(guò)渡,是初學(xué)者需要迫切解決的問(wèn)題,為此,作者特意編寫(xiě)了本書(shū)。
本書(shū)的特色
1.以從入門(mén)到精通的模式構(gòu)建內(nèi)容,讓讀者入門(mén)容易
為了使讀者能夠完全看懂本書(shū)的內(nèi)容,本書(shū)遵循從入門(mén)到精通基礎(chǔ)類(lèi)圖書(shū)的寫(xiě)法,循序漸進(jìn)地講解R語(yǔ)言的基本知識(shí)。
2.破解語(yǔ)言難點(diǎn),幫助讀者繞過(guò)學(xué)習(xí)中的誤區(qū)
本書(shū)通過(guò)詳細(xì)講解基本知識(shí)點(diǎn),讓讀者理解并繞過(guò)學(xué)習(xí)中的誤區(qū),知其然又知其所以然。
3.視頻講解,降低學(xué)習(xí)難度
書(shū)中每一章均提供圖文并茂的教學(xué)視頻,這些視頻能夠引導(dǎo)初學(xué)者快速入門(mén),增強(qiáng)學(xué)習(xí)的信心,從而快速理解所學(xué)的知識(shí)。
4.貼心提示和注意事項(xiàng)提醒
本書(shū)根據(jù)需要在文中安排了很多注意小板塊,讓讀者可以在學(xué)習(xí)過(guò)程中更輕松地理解相關(guān)知識(shí)點(diǎn)及概念,更快地掌握個(gè)別技術(shù)的應(yīng)用技巧。
5.源程序 視頻 PPT豐富的學(xué)習(xí)資料,讓學(xué)習(xí)更輕松
本書(shū)的篇幅有限,不可能囊括基礎(chǔ) 范例 項(xiàng)目案例的全部?jī)?nèi)容,所以配備了學(xué)習(xí)資源來(lái)輔助實(shí)現(xiàn)。在本書(shū)的學(xué)習(xí)資源中不但有全書(shū)的源代碼,而且還精心制作了實(shí)例講解視頻、知識(shí)點(diǎn)講解視頻等,讀者可以掃描書(shū)中提供的二維碼觀看視頻,也可以掃描下方的二維碼獲取源代碼和PPT課件。
6.QQ群實(shí)現(xiàn)教學(xué)互動(dòng),形成互幫互學(xué)的朋友圈
本書(shū)作者為了方便給讀者答疑,特提供了QQ群進(jìn)行技術(shù)支持,并且隨時(shí)在線與讀者互動(dòng)。讓大家在互學(xué)互幫中形成一個(gè)良好的學(xué)習(xí)編程氛圍。
本書(shū)的讀者對(duì)象
? 初學(xué)編程的自學(xué)者 編程愛(ài)好者
? 大中專(zhuān)院校的教師和學(xué)生 ? 相關(guān)培訓(xùn)機(jī)構(gòu)的教師和學(xué)員
? 做畢業(yè)設(shè)計(jì)的學(xué)生 ?初、中級(jí)程序開(kāi)發(fā)人員
? 軟件測(cè)試人員 ?參加實(shí)習(xí)的初級(jí)程序員
致謝
本書(shū)在編寫(xiě)過(guò)程中,得到了清華大學(xué)出版社編輯的大力支持,正是各位編輯的求實(shí)、耐心和效率,才使得本書(shū)能夠在這么短的時(shí)間內(nèi)出版。另外,也十分感謝我的家人給予的巨大支持。由于本人水平有限,書(shū)中紕漏之處在所難免,懇請(qǐng)廣大讀者提出意見(jiàn)或建議,以便修訂并使之更臻完善。
最后感謝您購(gòu)買(mǎi)本書(shū),希望本書(shū)能成為您編程路上的領(lǐng)航者,祝您閱讀快樂(lè)!
編 者
張婷,畢業(yè)于山東大學(xué),計(jì)算機(jī)碩士,精通多種開(kāi)發(fā)語(yǔ)言,多年來(lái)一直從事人工智能、數(shù)據(jù)通信、數(shù)據(jù)采集、網(wǎng)絡(luò)傳輸、數(shù)據(jù)分析等領(lǐng)域的工作,F(xiàn)就職于藥明生物,從事于生物分子的數(shù)據(jù)分析和深度學(xué)習(xí)預(yù)測(cè)的工作。
第1章 R語(yǔ)言基礎(chǔ) 1
1.1 R語(yǔ)言的發(fā)展歷程 2
1.2 R語(yǔ)言的特點(diǎn) 2
1.3 安裝R語(yǔ)言運(yùn)行環(huán)境 3
1.3.1 Windows系統(tǒng)安裝R語(yǔ)言 3
1.3.2 在Linux系統(tǒng)和macOS系統(tǒng)安裝R語(yǔ)言 6
1.4 R語(yǔ)言開(kāi)發(fā)工具:R GUI 7
1.4.1 命令行方式運(yùn)行R程序 7
1.4.2 文件方式運(yùn)行R程序 8
1.5 R語(yǔ)言開(kāi)發(fā)工具:RStudio 9
1.5.1 安裝RStudio 10
1.5.2 RStudio界面 12
1.5.3 使用RStudio開(kāi)發(fā)R程序 13
1.6 認(rèn)識(shí)第一個(gè)R程序:石頭、剪刀、布游戲 15
1.6.1 新建R工程 15
1.6.2 編寫(xiě)程序文件 16
第2章 R語(yǔ)言語(yǔ)法基礎(chǔ) 19
2.1 注釋 20
2.2 標(biāo)識(shí)符和關(guān)鍵字 21
2.2.1 標(biāo)識(shí)符 21
2.2.2 關(guān)鍵字 22
2.3 常量和變量 23
2.3.1 常量 23
2.3.2 變量 25
2.4 數(shù)據(jù)類(lèi)型 27
2.4.1 數(shù)據(jù)的分類(lèi) 27
2.4.2 整型 29
2.4.3 實(shí)數(shù)型 29
2.4.4 邏輯型 30
2.4.5 復(fù)數(shù)型 30
2.4.6 字符串型 31
2.4.7 因子型 32
2.5 向量 33
2.5.1 創(chuàng)建向量 33
2.5.2 訪問(wèn)向量中的元素 34
2.5.3 修改向量中的元素 35
2.5.4 向向量中添加新元素 36
2.5.5 向量運(yùn)算 37
2.5.6 向量統(tǒng)計(jì) 37
2.5.7 類(lèi)型轉(zhuǎn)換 39
2.6 運(yùn)算符和表達(dá)式 42
2.6.1 算術(shù)運(yùn)算符 43
2.6.2 關(guān)系運(yùn)算符 44
2.6.3 邏輯運(yùn)算符 45
2.6.4 賦值運(yùn)算符 46
2.6.5 其他運(yùn)算符 47
2.6.6 運(yùn)算符的優(yōu)先級(jí) 49
第3章 流程控制語(yǔ)句 51
3.1 條件語(yǔ)句 52
3.1.1 條件語(yǔ)句介紹 52
3.1.2 if語(yǔ)句 53
3.1.3 if...else語(yǔ)句 53
3.1.4 if…else if…else語(yǔ)句 54
3.1.5 switch 語(yǔ)句 56
3.2 循環(huán)語(yǔ)句 58
3.2.1 repeat語(yǔ)句 58
3.2.2 while語(yǔ)句 59
3.2.3 for語(yǔ)句 60
3.3 循環(huán)控制語(yǔ)句 61
3.3.1 break 語(yǔ)句 61
3.3.2 next 語(yǔ)句 62
第4章 函數(shù) 65
4.1 函數(shù)基礎(chǔ) 66
4.1.1 函數(shù)的特征和好處 66
4.1.2 R 語(yǔ)言函數(shù)和其他編程語(yǔ)言函數(shù)的區(qū)別 67
4.2 定義函數(shù) 67
4.2.1 定義函數(shù)的語(yǔ)法格式 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 使用默認(rèn)參數(shù) 74
4.3.4 存儲(chǔ)函數(shù)返回值 76
4.4 內(nèi)置函數(shù) 77
4.4.1 數(shù)學(xué)和統(tǒng)計(jì)函數(shù) 78
4.4.2 字符和字符串處理函數(shù) 79
4.4.3 文件操作函數(shù) 82
4.4.4 概率分布函數(shù) 86
4.4.5 日期和時(shí)間函數(shù) 89
第5章 數(shù)據(jù)結(jié)構(gòu) 95
5.1 矩陣 96
5.1.1 創(chuàng)建和訪問(wèn)矩陣 96
5.1.2 轉(zhuǎn)置操作 98
5.1.3 求和、平均值和總和 99
5.1.4 行和列操作 100
5.1.5 矩陣運(yùn)算 101
5.1.6 索引和切片 103
5.2 列表 104
5.2.1 創(chuàng)建和訪問(wèn)列表 104
5.2.2 更新列表元素 107
5.2.3 遍歷列表 109
5.3 數(shù)組 111
5.3.1 創(chuàng)建數(shù)組 112
5.3.2 訪問(wèn)數(shù)組 113
5.3.3 修改數(shù)組元素 115
5.3.4 數(shù)組運(yùn)算 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 訪問(wèn)數(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 因子水平標(biāo)簽 134
5.5.3 生成因子水平 135
5.6 數(shù)據(jù)表 137
5.6.1 創(chuàng)建數(shù)據(jù)表 137
5.6.2 對(duì)數(shù)據(jù)表的操作 139
5.7 時(shí)間序列 143
5.7.1 創(chuàng)建時(shí)間序列 143
5.7.2 時(shí)間序列的可視化 145
5.7.3 時(shí)間序列的索引和切片 147
5.7.4 時(shí)間序列的分析和建模 149
5.7.5 時(shí)間序列的統(tǒng)計(jì)性質(zhì) 150
第6章 包和環(huán)境空間 153
6.1 包(Package) 154
6.1.1 R語(yǔ)言包的管理 154
6.1.2 自定義R包 157
6.2 環(huán)境空間 159
6.2.1 環(huán)境空間的種類(lèi) 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 使用臨時(shí)環(huán)境 166
第7章 數(shù)據(jù)輸入和導(dǎo)出 169
7.1 數(shù)據(jù)輸入和導(dǎo)出介紹 170
7.2 使用鍵盤(pán)輸入數(shù)據(jù) 170
7.3 操作CSV文件 172
7.3.1 CSV文件的優(yōu)點(diǎn) 172
7.3.2 讀取CSV文件 173
7.3.3 寫(xiě)入CSV文件 174
7.3.4 數(shù)據(jù)轉(zhuǎn)換和處理 175
7.4 Excel文件 178
7.4.1 R語(yǔ)言和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ù)庫(kù)連接 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)頁(yè)抓取數(shù)據(jù) 200
7.8.1 R語(yǔ)言和網(wǎng)絡(luò)爬蟲(chó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語(yǔ)言和數(shù)據(jù)處理 208
8.1.1 R語(yǔ)言的優(yōu)勢(shì) 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語(yǔ)言繪圖系統(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 繪制雙變量散點(diǎn)圖 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ù)庫(kù)數(shù)據(jù)的可視化 275
第10章 R語(yǔ)言和人工智能 277
10.1 機(jī)器學(xué)習(xí) 278
10.1.1 機(jī)器學(xué)習(xí)相關(guān)包 278
10.1.2 包c(diǎn)aret 278
10.1.3 包randomForest 285
10.1.4 包e1071 288
10.1.5 包glmnet 291
10.1.6 包xgboost 293
10.2 深度學(xué)習(xí) 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 導(dǎo)入包 309
11.5.2 設(shè)計(jì)UI 310
11.6 Server服務(wù)器端 313
11.6.1 準(zhǔn)備工作 313
11.6.2 數(shù)據(jù)預(yù)處理 314
11.6.3 數(shù)據(jù)可視化 316
11.6.4 數(shù)據(jù)導(dǎo)出 318
11.7 調(diào)試運(yùn)行 319
第12章 基于機(jī)器學(xué)習(xí)的患者再入院預(yù)測(cè)分析系統(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ù)預(yù)處理 327
12.5.2 psych:心理學(xué)和社會(huì)科學(xué)研究 328
12.5.3 ROSE:不平衡處理 329
12.5.4 caret模型訓(xùn)練和評(píng)估 330
12.6 數(shù)據(jù)處理 330
12.6.1 導(dǎo)入數(shù)據(jù)集 331
12.6.2 數(shù)據(jù)預(yù)處理 333
12.7 第一方案 342
12.7.1 劃分訓(xùn)練集和測(cè)試集 342
12.7.2 數(shù)據(jù)集平衡 343
12.7.3 交叉驗(yàn)證 343
12.7.4 模型比較 347
12.8 第二方案 349
12.8.1 數(shù)據(jù)集拆分和數(shù)據(jù)平衡 349
12.8.2 邏輯回歸模型擬合和預(yù)測(cè) 350
12.8.3 計(jì)算處理 350
12.8.4 邏輯回歸模型的擬合、預(yù)測(cè)和評(píng)估 351
12.8.5 使用交叉驗(yàn)證方法訓(xùn)練決策樹(shù)模型 352
12.8.6 使用交叉驗(yàn)證方法訓(xùn)練隨機(jī)森林模型 353
12.8.7 實(shí)現(xiàn)樸素貝葉斯模型 354
12.9 模型訓(xùn)練和評(píng)估 356
12.9.1 數(shù)據(jù)預(yù)處理 356
12.9.2 邏輯回歸模型的訓(xùn)練和評(píng)估 357
12.9.3 決策樹(shù)模型的訓(xùn)練和評(píng)估 358
12.9.4 隨機(jī)森林模型的訓(xùn)練和評(píng)估 359
12.9.5 樸素貝葉斯模型的訓(xùn)練和評(píng)估 360
12.10 結(jié)論 361