




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
R語(yǔ)言程序設(shè)計(jì)
課程概要R語(yǔ)言是一門(mén)用于統(tǒng)計(jì)分析、數(shù)據(jù)挖掘和數(shù)據(jù)可視化的語(yǔ)言,在大數(shù)據(jù)時(shí)代其應(yīng)用領(lǐng)域非常廣泛。本課程從數(shù)據(jù)挖掘角度講解R語(yǔ)言,涉及R語(yǔ)言特性、數(shù)據(jù)對(duì)象和管理、數(shù)據(jù)可視化、基本統(tǒng)計(jì)分析概念與應(yīng)用、數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)。面向全校本科生選修課,基礎(chǔ)能力/信息能力模塊先修課“大學(xué)計(jì)算機(jī)基礎(chǔ)”1課程目標(biāo)課程目標(biāo)1:專業(yè)知識(shí)方面。掌握R語(yǔ)言與數(shù)據(jù)挖掘的基礎(chǔ)知識(shí),學(xué)會(huì)R語(yǔ)言的常用功能,理解與掌握使用R語(yǔ)言進(jìn)行數(shù)據(jù)挖掘的基本原理。課程目標(biāo)2:專業(yè)能力方面。掌握R語(yǔ)言數(shù)據(jù)挖掘中的建模與應(yīng)用,了解和熟悉常用數(shù)據(jù)挖掘算法例如分類與預(yù)測(cè)、聚類分析、關(guān)聯(lián)規(guī)則、智能推薦、時(shí)序模式、神經(jīng)網(wǎng)絡(luò)的基本原理和應(yīng)用。課程目標(biāo)3:綜合能力方面。在具體案例中掌握實(shí)施R語(yǔ)言數(shù)據(jù)挖掘的流程,初步具備綜合運(yùn)用R語(yǔ)言進(jìn)行數(shù)據(jù)挖掘的基本能力。課程目標(biāo)4:思想政治素質(zhì)方面。強(qiáng)化學(xué)生在大數(shù)據(jù)挖掘?qū)嵺`中的道德品質(zhì)與倫理素養(yǎng),要求學(xué)生在其中培養(yǎng)愛(ài)國(guó)敬業(yè)、誠(chéng)實(shí)守信等基本素質(zhì)。2教學(xué)內(nèi)容與時(shí)間3模塊周數(shù)內(nèi)容課堂學(xué)時(shí)實(shí)驗(yàn)學(xué)時(shí)一
基礎(chǔ)1R語(yǔ)言概述2(2)2數(shù)據(jù)對(duì)象223數(shù)據(jù)管理224數(shù)據(jù)可視化225模塊一復(fù)習(xí)2(2)二進(jìn)階6數(shù)據(jù)探索227數(shù)據(jù)分析228數(shù)學(xué)建模-12(2)9數(shù)學(xué)建模-22210數(shù)學(xué)建模-32(2)11模塊二復(fù)習(xí)2(2)三
拓展12R語(yǔ)言高級(jí)特性2(2)13應(yīng)用拓展-12214應(yīng)用拓展-22215課程復(fù)習(xí)2(2)16
考試共計(jì)3018+(12)()為課外學(xué)時(shí)基礎(chǔ)知識(shí)4序號(hào)主題內(nèi)容掌握1R語(yǔ)言概述R起源、下載使用、R程序特點(diǎn)、包、數(shù)據(jù)集***2數(shù)據(jù)對(duì)象數(shù)據(jù)類型,向量(等差數(shù)列),矩陣,數(shù)組,數(shù)據(jù)框,列表,因子***3數(shù)據(jù)管理控制結(jié)構(gòu),編寫(xiě)函數(shù),函數(shù)族,數(shù)據(jù)輸入輸出***4數(shù)據(jù)可視化繪圖基礎(chǔ)plot(),繪圖進(jìn)階ggplot()***基礎(chǔ)知識(shí)5序號(hào)主題內(nèi)容掌握5數(shù)據(jù)探索數(shù)據(jù)描述、清洗、集成、規(guī)范、重構(gòu)**6數(shù)據(jù)分析隨機(jī)數(shù)模擬、假設(shè)檢驗(yàn)、方差分析、線性回歸、廣義線性模型**7數(shù)據(jù)挖掘數(shù)據(jù)挖掘、決策樹(shù)、分類、聚類、Rattle**8高級(jí)特性面向?qū)ο蟆⑿阅芴嵘?9應(yīng)用拓展模型拓展(關(guān)聯(lián)規(guī)則、時(shí)間序列分析)、工具*配套教材6模塊編號(hào)目錄基礎(chǔ)篇1R語(yǔ)言概述2數(shù)據(jù)對(duì)象3數(shù)據(jù)管理4數(shù)據(jù)可視化進(jìn)階篇5數(shù)據(jù)探索6數(shù)據(jù)分析7數(shù)據(jù)挖掘拓展篇8高級(jí)特性9應(yīng)用拓展配套資源7學(xué)堂在線:R語(yǔ)言程序設(shè)計(jì)(北京交通大學(xué)周圍)參考教材及資料8大數(shù)據(jù)技術(shù)叢書(shū)R語(yǔ)言與數(shù)據(jù)挖掘作者:張良均等出版社:機(jī)械工業(yè)出版出版年:2019-11-1R語(yǔ)言編程藝術(shù)作者:(美)NormanMatloff出版社:機(jī)械工業(yè)出版社譯者:陳堰等出版年:2013-5常用鏈接:R語(yǔ)言:入門(mén)教程:/rIDE工具:R包下載:論壇:/t/r論壇:R共享:評(píng)定與考核(參考)9小組研究型實(shí)驗(yàn):每組5人,完成相應(yīng)項(xiàng)目。線上單元測(cè):
共9個(gè)單元測(cè)試或作業(yè),在線完成,自動(dòng)出成績(jī)。模塊一和模塊二:
共2次線上/線下測(cè)試或作業(yè),限時(shí)完成,有成績(jī)。期末考試:線下筆試,限時(shí),監(jiān)考,閉卷。簽到考勤:按照學(xué)校請(qǐng)假制度。小組研究型實(shí)驗(yàn)要求每小組5人,共同完成各自研究型實(shí)驗(yàn)(大作業(yè))。小組名單第1位和第5位同學(xué)為正副組長(zhǎng),進(jìn)行任務(wù)分工、討論、校對(duì)、整合、優(yōu)化等工作。實(shí)驗(yàn)大作業(yè)要求:具有一定挑戰(zhàn)性和難度的研究題目。在期末考試前提交,按照論文模板要求撰寫(xiě)研究實(shí)驗(yàn)報(bào)告。10R語(yǔ)言學(xué)習(xí)的特點(diǎn)R語(yǔ)言是一門(mén)程序設(shè)計(jì)語(yǔ)言,主要通過(guò)命令行方式完成。和數(shù)據(jù)分析、數(shù)據(jù)挖掘的模型聯(lián)系緊密,雖然幾行語(yǔ)句就可以完成,但每一個(gè)知識(shí)點(diǎn)都需要深入研究。實(shí)用性很強(qiáng),今后的科研活動(dòng)能用得上。11如何學(xué)好R語(yǔ)言作為一門(mén)語(yǔ)言,多敲代碼、多實(shí)驗(yàn)是必經(jīng)之路。作為一門(mén)數(shù)據(jù)分析挖掘的工具,盡可能理解算法模型背后的原理。面對(duì)日新月異的大數(shù)據(jù)應(yīng)用,關(guān)注幾個(gè)權(quán)威論壇,學(xué)習(xí)常態(tài)化。12R語(yǔ)言程序設(shè)計(jì)
R語(yǔ)言概述了解R語(yǔ)言R起源、下載使用、R程序特點(diǎn)、包、數(shù)據(jù)集第一個(gè)R語(yǔ)言會(huì)話開(kāi)發(fā)環(huán)境配置程序編寫(xiě)運(yùn)行綜合實(shí)驗(yàn)?zāi)夸?5了解R語(yǔ)言應(yīng)用于統(tǒng)計(jì)分析、數(shù)據(jù)挖掘等領(lǐng)域開(kāi)源免費(fèi),編程方便為什么選擇R語(yǔ)言編程語(yǔ)言排行榜18常用分析工具Excel:辦公室應(yīng)用軟件SPSS:專業(yè)統(tǒng)計(jì)分析軟件MATLAB:商用數(shù)學(xué)軟件R:統(tǒng)計(jì)分析數(shù)據(jù)挖掘收費(fèi)收費(fèi)收費(fèi)免費(fèi)SAS:統(tǒng)計(jì)分析商用軟件收費(fèi)免費(fèi)Python:膠水語(yǔ)言S語(yǔ)言是由AT&T貝爾實(shí)驗(yàn)室開(kāi)發(fā)的一種用來(lái)進(jìn)行數(shù)據(jù)探索、統(tǒng)計(jì)分析、作圖的解釋型語(yǔ)言。1995年,Auckland大學(xué)的RobertGentleman和RossIhaka及其他志愿人員開(kāi)發(fā)了R系統(tǒng)。R是基于S語(yǔ)言的GNU計(jì)劃項(xiàng)目?,F(xiàn)在R語(yǔ)言由20余人的核心團(tuán)隊(duì)負(fù)責(zé)開(kāi)發(fā)。R的第三方包、工具、論壇很多,不斷更新中。什么是R?開(kāi)源免費(fèi),第三方包發(fā)布的CRAN平臺(tái)跨平臺(tái)(開(kāi)源,支持多種OS)可拓展性強(qiáng)(與其他語(yǔ)言相互調(diào)用)編程簡(jiǎn)單,解釋性、交互性語(yǔ)言數(shù)據(jù)分析功能強(qiáng)大,專為統(tǒng)計(jì)和數(shù)據(jù)挖掘開(kāi)發(fā)龐大且活躍的社區(qū)維護(hù)專業(yè)數(shù)據(jù)分析領(lǐng)域的標(biāo)準(zhǔn)工具R語(yǔ)言的優(yōu)點(diǎn)R相關(guān)網(wǎng)址:/t/rR是一種解釋性語(yǔ)言,和編譯性語(yǔ)言相比,速度略慢。R所有計(jì)算都是在內(nèi)存中進(jìn)行的。R語(yǔ)言包的編寫(xiě)者來(lái)自不同領(lǐng)域,在一定程度上較混亂,有些更新慢。R語(yǔ)言的缺點(diǎn)R可以在CRAN(ComprehensiveRArchiveNetwork)免費(fèi)下載。Linux、MacOSX和Windows都有相應(yīng)編譯好的二進(jìn)制版本。可以通過(guò)安裝包(package)來(lái)增強(qiáng)R的功能。R語(yǔ)言的獲取和安裝/mirrors.htmlR的GUIR的圖形用戶界面RStudio是專門(mén)用于R語(yǔ)言環(huán)境的集成開(kāi)發(fā)環(huán)境(IDE),本課程推薦使用。使用RStudio開(kāi)發(fā)程序R語(yǔ)言有眾多的繪圖工具包,如ggplot2。R語(yǔ)言有強(qiáng)大的數(shù)據(jù)挖掘和可視化工具,如rattle。數(shù)據(jù)可視化工具R是一種區(qū)分大小寫(xiě)的解釋性語(yǔ)言??梢栽诿钐崾痉?>)后,輸入并執(zhí)行一條命令,或者一次性執(zhí)行寫(xiě)在腳本文件中的一組命令。R中有多種數(shù)據(jù)類型,包括向量、矩陣、數(shù)據(jù)框以及列表。R中的很多功能是由程序內(nèi)置函數(shù)和用戶自編函數(shù)提供的,一次交互會(huì)話期間的所有數(shù)據(jù)對(duì)象都被保存在內(nèi)存中。一些基本函數(shù)是默認(rèn)直接使用,而有些函數(shù)則需加載程序包。R語(yǔ)言的編程特點(diǎn)在Rstudio中練習(xí):R的使用R的內(nèi)置幫助系統(tǒng)提供了當(dāng)前已安裝包中所有函數(shù)的細(xì)節(jié)、參考文獻(xiàn)以及使用示例。R的幫助函數(shù):內(nèi)置幫助系統(tǒng)函數(shù)功能help.start()打開(kāi)幫助文檔help("plot")或者
?plot查看函數(shù)plot的幫助(引號(hào)可以省略)help.search("plot")或者??plot以plot為關(guān)鍵詞搜索本地幫助文檔example(“plot”)函數(shù)plot的使用示例(引號(hào)可以省略)RSiteSearch("plot")以plot為關(guān)鍵詞搜索在線文檔個(gè)郵件列表存檔apropos("plot",mode="function")列出名稱中含有plot的所有可用函數(shù)data()列出當(dāng)前已加載包中所含的所有可用示例數(shù)據(jù)集vignette()列出當(dāng)前已經(jīng)安裝包中所有可能的vignette文檔vignette(“plot”)為主題plot顯示指定的vignette文檔工作空間(workspace),儲(chǔ)存著所有用戶定義的對(duì)象。R會(huì)話結(jié)束時(shí),可以保存工作空間,下次啟動(dòng)R時(shí)自動(dòng)載入。工作目錄(workingdirectory)
getwd():查看當(dāng)前工作目錄setwd():設(shè)定當(dāng)前的工作目錄。如果讀入不在當(dāng)前工作目錄的文件,需要寫(xiě)明完整的路徑。RStudio工作空間工作空間的命令包是R函數(shù)、數(shù)據(jù)、預(yù)編譯代碼以一種定義完善的格式組成的集合。R自帶了一系列默認(rèn)包,提供了種類繁多的默認(rèn)函數(shù)和數(shù)據(jù)集。計(jì)算機(jī)上存儲(chǔ)包的目錄稱為庫(kù)(library)。libPaths():顯示庫(kù)所在的位置。library():顯示庫(kù)中有哪些包。什么是包第一次安裝包:install.packages("package_name","dir")
也可在RStudio中的菜單欄里從CRAN下載。一個(gè)包僅需要安裝一次。使用update.packages()可以更新已經(jīng)安裝的包。使用installed.packages()查看已安裝包的信息。包的安裝加載包:library(),require()查看包的幫助:library(help=“包名")查看當(dāng)前環(huán)境哪些包加載:find.package()移除包:detach(package:包名)包的數(shù)據(jù)加載到內(nèi)存中:attach(“數(shù)據(jù)集名”)列出所有安裝的包library()包的使用base程序包,R語(yǔ)言的基礎(chǔ)包,包含常用的數(shù)學(xué)計(jì)算。stats程序包,統(tǒng)計(jì)包,包含用于統(tǒng)計(jì)計(jì)算和生成隨機(jī)數(shù)的功能。datasets程序包,R語(yǔ)言的基礎(chǔ)包,可以直接調(diào)用數(shù)據(jù)集,如iris。查看本機(jī)上所有R包的數(shù)據(jù)集data(package=.packages(all.available=TRUE))常用包R數(shù)據(jù)挖掘相關(guān)包功能函數(shù)及加載包分類與預(yù)測(cè)
nnet()需要加載BP神經(jīng)網(wǎng)絡(luò)nnet包;randomForest()需要加載隨機(jī)森林randomForest
;
svm()需要加載e1071包;tree()需要加載CRAT決策樹(shù)tree包等;聚類分析
hclust()函數(shù)、kmeans()函數(shù)在stats包中關(guān)聯(lián)規(guī)則
apriori()需要加載arules包時(shí)間序列
arima()需要加載forecast、tseries包數(shù)據(jù)集描述airquality紐約1973年5-9月每日空氣質(zhì)量評(píng)估attenu多個(gè)觀測(cè)站觀測(cè)到的加利福尼亞23次地震數(shù)據(jù)beaver1
(beavers)一只海貍每10分鐘的體溫?cái)?shù)據(jù),共114條數(shù)據(jù)beaver2
(beavers)另一只海貍每10分鐘的體溫?cái)?shù)據(jù),共100條數(shù)據(jù)cars1920年代,汽車的速度與剎車距離chickwts不同飲食種類對(duì)小雞重量的影響esoph喝酒,吸煙對(duì)食管癌的影響faithful一個(gè)間歇泉的爆發(fā)時(shí)間和持續(xù)時(shí)間InsectSprays不同殺蟲(chóng)劑對(duì)昆蟲(chóng)數(shù)目的影響irisEdgarAnderson記錄的3種鳶尾花形態(tài)數(shù)據(jù)LifeCycleSavings50個(gè)國(guó)家的存款率mtcars32輛汽車的11個(gè)指標(biāo)數(shù)據(jù)PlantGrowth三種處理方式對(duì)植物產(chǎn)量的影響內(nèi)置數(shù)據(jù)集常用的數(shù)據(jù)集內(nèi)置數(shù)據(jù)集數(shù)據(jù)集描述pressure溫度和氣壓puromycin兩種細(xì)胞中因子濃度對(duì)酶促反應(yīng)的影響quakes1000次地震觀測(cè)數(shù)據(jù)(震級(jí)>4)sleep兩種藥物的催眠效果stackloss化工廠將氨轉(zhuǎn)為硝酸的數(shù)據(jù)swiss瑞士生育率和社會(huì)經(jīng)濟(jì)指標(biāo)ToothGrowthVC劑量和攝入方式對(duì)豚鼠牙齒的影響trees樹(shù)木形態(tài)指標(biāo)USArrests美國(guó)50個(gè)州的四個(gè)犯罪率指標(biāo)USJudgeRating43名律師的12個(gè)評(píng)價(jià)指標(biāo)warpbreaks織布機(jī)異常數(shù)據(jù)women15名美國(guó)女性的身高和體重情況常用數(shù)據(jù)集(接上頁(yè))了解R語(yǔ)言R起源、R優(yōu)缺點(diǎn)下載使用R和RStudioR語(yǔ)言編程特點(diǎn)包、數(shù)據(jù)集小結(jié)39第一個(gè)R語(yǔ)言會(huì)話開(kāi)發(fā)環(huán)境配置程序編寫(xiě)運(yùn)行第一個(gè)R語(yǔ)言會(huì)話安裝1:R軟件實(shí)驗(yàn)用R版本:R4.1.2forWindows或更高安裝2:集成開(kāi)發(fā)環(huán)境RStudio/products/rstudio/免費(fèi)的圖形界面編輯器,更友好的界面及更強(qiáng)的操作性。實(shí)驗(yàn)用RStudio版本:RStudioDesktop2021.09.1+372或更高軟件下載與安裝參考第一章綜合實(shí)驗(yàn)指導(dǎo)R軟件的控制臺(tái)窗口安裝1:R軟件RStudio是專門(mén)用于R語(yǔ)言環(huán)境的IDE,本課程推薦使用。安裝2:集成開(kāi)發(fā)環(huán)境RStudio工作空間(Workspace)是RStudio當(dāng)前的工作環(huán)境,存儲(chǔ)了用戶定義的所有對(duì)象(向量、矩陣、列表、數(shù)據(jù)框、函數(shù))。工作空間管理在RStudio中寫(xiě)程序1.書(shū)寫(xiě)規(guī)范 2.命令提示符 3.腳本文件 4.運(yùn)算符 5.元素命名 6.函數(shù) 7.注釋 8.獲取幫助 程序編寫(xiě)運(yùn)行R是一種區(qū)分大小寫(xiě)的解釋性語(yǔ)言。可以在命令提示符(>)后,輸入并執(zhí)行一條命令,或者一次性執(zhí)行寫(xiě)在腳本文件中的一組命令。R中有多種數(shù)據(jù)類型,包括向量、矩陣、數(shù)據(jù)框以及列表。R中的很多功能是由程序內(nèi)置函數(shù)和用戶自編函數(shù)提供的,一次交互會(huì)話期間的所有數(shù)據(jù)對(duì)象都被保存在內(nèi)存中。一些基本函數(shù)是默認(rèn)直接使用,而有些函數(shù)則需加載程序包。編寫(xiě)“Hello,World!”程序1.書(shū)寫(xiě)規(guī)范大小寫(xiě)敏感基本命令:表達(dá)式(expressions),賦值(assignments)命令分割:可以用“;”隔開(kāi),或者另起一行程序塊:通過(guò)大括弧({和})放在一起構(gòu)成一個(gè)復(fù)合表達(dá)式注釋:一行中,從“#”開(kāi)始到句子收尾之間的語(yǔ)句是注釋不需要命名基本數(shù)據(jù)類型和對(duì)象編寫(xiě)“Hello,World!”程序2.命令提示符啟動(dòng)R語(yǔ)言解釋器,會(huì)得到提示“>”,其后輸入程序。>myString<-"Hello,World!">print(myString)[1]"Hello,World!"編寫(xiě)“Hello,World!”程序3.腳本文件腳本語(yǔ)言(scriptinglanguage):是依靠解釋器完成相應(yīng)功能的一類計(jì)算機(jī)語(yǔ)言,通常以ASCII碼的文本格式保存源程序。腳本語(yǔ)言是解釋型語(yǔ)言,和編譯型語(yǔ)言相比,速度較慢。#MyfirstprograminR
ProgrammingmyString<-"Hello,World!"print(myString)test.R腳本語(yǔ)言(RScript)
腳本文件>source("test.R")[1]"Hello,World!"執(zhí)行腳本文件C:\Rscripttest.R[1]"Hello,World!"編寫(xiě)“Hello,World!”程序3.腳本文件在RStudio中執(zhí)行腳本文件使用RScript執(zhí)行腳本文件注意:文件的位置編寫(xiě)“Hello,World!”程序4.運(yùn)算符
賦值符號(hào):<-或->或=運(yùn)算符號(hào):+(加)、-(減)、*(乘)、/(除)、^(乘方)、%/%整除、%%求余邏輯判斷符號(hào):>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!=(不等)、==(相等)邏輯運(yùn)算符號(hào):&(邏輯與)、|(邏輯或)、!(邏輯非)編寫(xiě)“Hello,World!”程序5.元素命名區(qū)分大小寫(xiě),注意China和china的不同。數(shù)字、字母、“.”和“_”都是允許的,但必須以.或者字母開(kāi)頭;如果以.開(kāi)頭,第二個(gè)字符不允許是數(shù)字;不能用數(shù)字開(kāi)頭,數(shù)字可以放在中間或結(jié)尾,例如result2。建議不要用過(guò)短的名稱,可以用”.”作為間隔,例如:anova.out1。不要使用保留名,例如:NA,NaN,pi,LETTERS,等。編寫(xiě)“Hello,World!”程序6.函數(shù)R語(yǔ)言的功能依靠函數(shù)來(lái)實(shí)現(xiàn)。函數(shù)形式:函數(shù)(輸入數(shù)據(jù),參數(shù)=)如果參數(shù)值沒(méi)有指定,以默認(rèn)值為準(zhǔn)。函數(shù)包括自定義函數(shù),泛型函數(shù)……#MyfirstprograminRProgrammingmyString<-"Hello,World!"print(myString)編寫(xiě)“Hello,World!”程序7.注釋注釋能幫助讀懂程序,在實(shí)際執(zhí)行程序時(shí)注釋部分會(huì)被解釋器忽略。單行注釋:使用#,其后內(nèi)容為注釋部分?;蛘呤褂谩啊被颉瘉?lái)顯示要注釋部分。#MyfirstprograminRProgrammingmyString<-"Hello,World!"print(myString)if(FALSE){"Thisisademo."}myString<-"Hello,World!"print(myString)8.獲取幫助R的內(nèi)置幫助系統(tǒng)提供了當(dāng)前已安裝包中所有函數(shù)的細(xì)節(jié)、參考文獻(xiàn)以及使用示例。編寫(xiě)“Hello,World!”程序函數(shù)功能help.start()打開(kāi)幫助文檔help("plot")或者
?plot查看函數(shù)plot的幫助(引號(hào)可以省略)help.search("plot")或者??plot以plot為關(guān)鍵詞搜索本地幫助文檔example(“plot”)函數(shù)plot的使用示例(引號(hào)可以省略)RSiteSearch("plot")以plot為關(guān)鍵詞搜索在線文檔個(gè)郵件列表存檔apropos("plot",mode="function")列出名稱中含有plot的所有可用函數(shù)data()列出當(dāng)前已加載包中所含的所有可用示例數(shù)據(jù)集vignette()列出當(dāng)前已經(jīng)安裝包中所有可能的vignette文檔vignette(“plot”)為主題plot顯示指定的vignette文檔第一個(gè)R語(yǔ)言會(huì)話開(kāi)發(fā)環(huán)境配置軟件下載與安裝工作空間管理程序編寫(xiě)運(yùn)行小結(jié)571.書(shū)寫(xiě)規(guī)范2.命令提示符3.腳本文件4.運(yùn)算符 5.元素命名 6.函數(shù) 7.注釋8.獲取幫助#MyfirstprograminRProgrammingmyString<-"Hello,World!"print(myString)test.R了解R語(yǔ)言R起源、下載使用、R程序特點(diǎn)、包、數(shù)據(jù)集第一個(gè)R語(yǔ)言會(huì)話開(kāi)發(fā)環(huán)境配置程序編寫(xiě)運(yùn)行本章小結(jié)58綜合實(shí)驗(yàn)掌握R軟件的下載和安裝過(guò)程。掌握RStudio軟件的下載和安裝過(guò)程。掌握R語(yǔ)言編程基本規(guī)范。掌握R語(yǔ)言的工作空間管理和使用。掌握包的下載安裝函數(shù)。了解rmarkdown的使用方法。能夠通過(guò)help方法自學(xué)函數(shù)及其中參數(shù)的用法。實(shí)驗(yàn)?zāi)繕?biāo)第1章講義中的案例第1章綜合實(shí)驗(yàn)第1章使用的函數(shù)第1章思考與練習(xí)實(shí)驗(yàn)內(nèi)容及資料目標(biāo):掌握R軟件的下載和安裝過(guò)程1.R軟件官網(wǎng)2.R軟件下載本書(shū)使用的R版本為R4.1.2forWindows選擇鏡像地址3.R軟件安裝安裝路徑不能包含中文實(shí)驗(yàn)1:R軟件安裝目標(biāo):掌握RStudio軟件的下載和安裝過(guò)程RStudio軟件官網(wǎng)免費(fèi)版2.RStudio軟件下載本書(shū)使用的版本為RStudioDesktop2021.09.13.RStudio軟件安裝安裝路徑不能出現(xiàn)中文,和R安裝路徑在同一個(gè)目錄下4.RStudio軟件使用5.RStudio的菜單和快捷方式實(shí)驗(yàn)2:RStudio安裝目標(biāo):掌握R語(yǔ)言編程基本規(guī)范書(shū)寫(xiě)規(guī)范:包含數(shù)字、字母、“.”和“_”命令提示符運(yùn)算符函數(shù)文件腳本注釋:使用#獲取幫助:help(),?,help.start(),data()實(shí)驗(yàn)3:
編寫(xiě)“HelloWorld!”程序目標(biāo):掌握R語(yǔ)言的工作空間管理和使用工作空間的設(shè)置工作路徑的讀取新工作路徑的設(shè)置工作空間的保存實(shí)驗(yàn)4:工作空間的管理和使用常用函數(shù):getwd(),setwd()ls(),rm(),help(),options()history(),save.image(),save()load(),q()目標(biāo):掌握包的下載安裝函數(shù);了解rmarkdown的使用方法。配置安裝Rmarkdown的環(huán)境Rmarkdown包的使用實(shí)驗(yàn)5:Rmarkdown包的安裝和使用(拓展)常用函數(shù):library(),require()library(help="package_name")find.package(),detach(),attach()思考與討論數(shù)據(jù)對(duì)象目錄數(shù)據(jù)類型數(shù)值型(numeric)、字符型(character)、復(fù)數(shù)型(complex)、邏輯型(logical)、特殊值等數(shù)據(jù)結(jié)構(gòu)向量(vector)、數(shù)組(array)、矩陣(matrix)、數(shù)據(jù)框(dataframe)、列表(list)、因子(factor)等綜合實(shí)驗(yàn)大小寫(xiě)敏感。命名:數(shù)字、字母、“.”和“_”都是允許的。不過(guò),一個(gè)命名必須以.或者字母開(kāi)頭。如果以.開(kāi)頭,第二個(gè)字符不允許是數(shù)字?;久睿罕磉_(dá)式(expressions),賦值(assignments)。命令分割:可以用“;”
隔開(kāi),或者另起一行。程序塊:基本命令可以通過(guò)大括弧({和})放在一起構(gòu)成一個(gè)復(fù)合表達(dá)式。注釋:一行中,從“#”
開(kāi)始到句子收尾之間的語(yǔ)句是注釋。基本數(shù)據(jù)類型:數(shù)值型(numeric)、字符型(character)、復(fù)數(shù)型(complex)和邏輯型(logical)。基本數(shù)據(jù)結(jié)構(gòu):向量(vector)、數(shù)組(array)、矩陣(matrix)、數(shù)據(jù)框(dataframe)、列表(list)、因子(factor)等。R語(yǔ)言特點(diǎn)(復(fù)習(xí))數(shù)據(jù)類型x
8a
'city'變量的賦值基本賦值語(yǔ)句answer
value變量名/賦值對(duì)象值賦值符號(hào)R語(yǔ)言常見(jiàn)的數(shù)據(jù)類型:字符型、數(shù)值型、邏輯型、復(fù)數(shù)型此外還有一些特殊值:NA:表示缺失值(Missingvalue),是“NotAvailable”的縮寫(xiě)Inf:表示無(wú)窮大,是“Infinite”的縮寫(xiě)NaN:表示非數(shù)值,是“NotaNumber”的縮寫(xiě)NULL:表示空值,即沒(méi)有內(nèi)容數(shù)據(jù)類型數(shù)據(jù)類型辨別函數(shù)轉(zhuǎn)換函數(shù)characteris.character()as.character()complexis.complex()as.complex()integeris.integer()as.integer()logicalis.logical()as.logical()numericis.numeric()as.numeric()NAis.na()as.na()在R中,字符型的日期值無(wú)法進(jìn)行日期變量的計(jì)算,可通過(guò)日期值處理函數(shù),將字符型的日期值轉(zhuǎn)換成日期變量。日期類型函數(shù)功能Sys.Date()返回系統(tǒng)當(dāng)前的日期Sys.time()返回系統(tǒng)當(dāng)前的日期和時(shí)間date()返回系統(tǒng)當(dāng)前的日期和時(shí)間(返回的值為字符串)as.Date()將字符串形式的日期值轉(zhuǎn)換為日期變量as.POSIXlt將字符串轉(zhuǎn)化為包含時(shí)間及時(shí)區(qū)的日期變量strptime()將字符型變量轉(zhuǎn)化為包含時(shí)間的日期變量strftime()將日期變量轉(zhuǎn)換成指定格式的字符型變量format()將日期變量轉(zhuǎn)換成指定格式的字符串a(chǎn)s.Date():將字符串形式的日期值轉(zhuǎn)換為日期變量。使用格式:as.Date(x,format="",...)其中x是要轉(zhuǎn)換的對(duì)象,為字符型數(shù)據(jù),format則給出了用于讀入日期的適當(dāng)格式。日期類型符號(hào)含義示例符號(hào)含義示例%d數(shù)字表示的日期01~31%Y四位數(shù)的年份2023%a縮寫(xiě)的星期名Mon%H24小時(shí)制小時(shí)00-23%A非縮寫(xiě)的星期名Monday%I12小時(shí)制小時(shí)01-12%w數(shù)字表示0-6%pAM/PM指示AM/PM%m數(shù)字表示的月份00~12%M十進(jìn)制的分鐘00-60%b縮寫(xiě)的月份Jan%S十進(jìn)制的秒00-60%B非縮寫(xiě)的月份January%y二位數(shù)的年份16其他日期類型as.POSIXlt()strptime()strftime()format()
日期類型#時(shí)間變量的轉(zhuǎn)換#創(chuàng)建一個(gè)字符型日期時(shí)間變量>x<-c("2023-02-0810:07:52","2023-08-0719:33:02")#判定是否為字符型變量>is.character(x)[1]TRUE#對(duì)字符串形式的日期時(shí)間值按照格式進(jìn)行轉(zhuǎn)換>as.POSIXlt(x,tz="","%Y-%m-%d%H:%M:%S")[1]"2023-02-0810:07:52CST""2023-08-0719:33:02CST">(x<-strptime(x,"%Y-%m-%d%H:%M:%S"))[1]"2023-02-0810:07:52CST""2023-08-0719:33:02CST">strftime(x,format="%Y/%m/%d")[1]"2023/02/08""2023/08/07“#輸出的格式轉(zhuǎn)換成format定義的格式>format(x,"%d/%m/%Y")[1]"08/02/2023""07/08/2023"查看對(duì)象的類型使用格式:class(x)、mode(x)、typeof(x)。其中x為需要查看類型的對(duì)象。mode()函數(shù)查看數(shù)據(jù)的大類,class()函數(shù)查看數(shù)據(jù)的類,typeof()函數(shù)則更加細(xì)化,查看數(shù)據(jù)的細(xì)類。對(duì)于未知類型的對(duì)象,在R中有3個(gè)函數(shù)可以查看對(duì)象的類型:>df<-data.frame(c1=letters[1:3],c2=1:3,c3=c(1,-1,3.0),stringsAsFactors=F)>sapply(df,mode)c1c2c3"character""numeric""numeric">sapply(df,class)c1c2c3"character""integer""numeric">sapply(df,typeof)c1c2c3"character""integer""double"數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)R有許多用于存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu),包括向量、矩陣、數(shù)組、數(shù)據(jù)框、列表和因子。向量向量的創(chuàng)建、等差序列、重復(fù)序列、向量索引、NA和NULL值、編輯、排序矩陣和數(shù)組矩陣的創(chuàng)建、合并、拉直、索引、行和列的計(jì)算、行列命名、數(shù)組創(chuàng)建、維度數(shù)據(jù)框和列表數(shù)據(jù)框的創(chuàng)建、索引、列表的創(chuàng)建、索引因子因子的創(chuàng)建、level(水平)、因子序列、因子的存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu):向量向量以一維數(shù)組的方法管理數(shù)據(jù),是R語(yǔ)言中最基本的數(shù)據(jù)結(jié)構(gòu)。向量可以是數(shù)值型、字符型、邏輯值型(T、F)和復(fù)數(shù)型。實(shí)例:創(chuàng)建不同類型的向量“:”運(yùn)算符,生成指定范圍內(nèi)數(shù)值構(gòu)成的向量。一個(gè)向量的所有元素都必須屬于相同的類型。如果不是,R將強(qiáng)制執(zhí)行類型轉(zhuǎn)換。>x1<-c(1,2,3,4)#創(chuàng)建數(shù)值型向量,可寫(xiě)成x1=c(1:4)>x2<-c("a","b","c","d")#創(chuàng)建字符型變量>x3<-c(TRUE,FALSE,FALSE,TRUE)#創(chuàng)建邏輯型變量向量c()函數(shù)創(chuàng)建向量length()測(cè)向量長(zhǎng)度>w<-c(1,3,4,5,6,7)>length(w)[1]6>mode(w)[1]“numeric”>w2<-c(T,F,T)>length(w2)[1]3>mode(w2)[1]"logical">w1<-c('張三','李四','王五')>length(w1)[1]3>mode(w1)[1]"character"向量一個(gè)向量的所有元素都必須屬于相同的類型。如果不是,R將強(qiáng)制執(zhí)行類型轉(zhuǎn)換。>w4<-c(w,w1)>w4[1]"1""3""4""5""6""7""張三""李四""王五">mode(w4)[1]"character">w5<-c(w1,w2)>w5[1]"張三""李四""王五""TRUE""FALSE""TRUE">mode(w5)[1]"character">(w<-seq(1:10))
[1]12345678910>(x<-sqrt(w))[1]1.0000001.4142141.7320512.0000002.2360682.4494902.6457512.8284273.0000003.162278向量的運(yùn)算R語(yǔ)言最強(qiáng)大的方面之一就是函數(shù)的向量化。向量的算術(shù)運(yùn)算如果兩個(gè)向量的長(zhǎng)度不同?>(w1<-c(2,3,2,3))[1]2323>(w2<-c(3,1,4,2,5,3))[1]314253>(w<-w1+w2)[1]546576Warningmessage:Inw1+w2:longerobjectlengthisnotamultipleofshorterobjectlengthseq(from=1,to=1,by=((to-from)/(length.out-1)),length.out=NULL,along.with=NULL,...)等差序列的創(chuàng)建seq()產(chǎn)生等距間隔的數(shù)列,其基本形式為:參數(shù)描述from等差數(shù)列的首項(xiàng)數(shù)據(jù),默認(rèn)為1to等差數(shù)列的尾項(xiàng)數(shù)據(jù),默認(rèn)為1by等差的數(shù)值length.out產(chǎn)生向量的長(zhǎng)度>(seq(1,-9))[1]10-1-2-3-4-5-6-7-8-9>(seq(1,-9,length=5))[1]1.0-1.5-4.0-6.5-9.0>(seq(1,-9,by=-2))[1]1-1-3-5-7-9>(seq(1,10,2))[1]13579重復(fù)序列的創(chuàng)建rep()是重復(fù)函數(shù),其基本形式:rep(x,n)其中x是預(yù)重復(fù)的序列,n是重復(fù)的次數(shù)。>(rep(1:4,2))[1]12341234>(rep(1:4,each=2))[1]11223344>(rep(1:4,c(2,2,2,2)))[1]11223344>(rep(1:4,c(2,1,2,1)))[1]112334>(rep(1:4,each=2,len=4))[1]1122>(rep(1:4,each=2,times=3))[1]112233441122334411223344練習(xí)創(chuàng)建一個(gè)向量x,內(nèi)含等差數(shù)列:首位為1.7,等差為0.1,長(zhǎng)度為5創(chuàng)建向量y,y為重復(fù)序列:元素為“red”、“orange”、“green”,各元素重復(fù)兩次,序列長(zhǎng)度為5向量索引索引,用方括號(hào)[]來(lái)實(shí)現(xiàn),也稱之為子集、下標(biāo)或切片。索引是R中最重要和最常用的運(yùn)算符。索引用來(lái)選擇向量中部分或個(gè)別元素來(lái)構(gòu)成子向量。向量1[向量2]:向量1中索引為向量2的那些元素。atcbfgh1234567vector:index:向量索引
R語(yǔ)言中,提供如下多種索引方法。給向量傳入正數(shù),它會(huì)返回此位置上的向量元素切片。它的第一個(gè)位置是1(而不像其他某些語(yǔ)言一樣是0)。給向量傳入負(fù)數(shù),它會(huì)返回一個(gè)向量切片,它將包含除了這些位置以外的所有元素。給向量傳入一個(gè)邏輯向量,它會(huì)返回一個(gè)向量切片,里面只包含索引為T(mén)RUE的元素。對(duì)于已命名的向量,給向量傳入命名的字符向量,將會(huì)返回向量中包含這些名字的元素切片。向量索引x[n] 第n個(gè)元素x[-n] 除了第n個(gè)元素的xx[1:n] 前n個(gè)元素x[-(1:n)] 第n+1至最后的元素x[c(1,4,2)] 指定元素x["name"] 名為"name"的元素x[x>3] 所有大于3的元素x[x>3&x<5] 區(qū)間(3,5)的元素x[x%in%c("a","and","the")]給定組中的元素例向量索引>x<-c(2,4,6,8,1)>x[c(1,3,5)][1]261>x[c(-2,-4)][1]261>x[c(TRUE,FALSE,TRUE,FALSE,TRUE)][1]261>names(x)<-c('one','two','three','four','five')>x[c('one','three','four')]onethreefour268>x[c(1,-1)]Errorinx[c(1,-1)]:only0'smaybemixedwithnegativesubscripts如果給每個(gè)元素命名,該方法也將返回相同的值:三個(gè)索引方法都將返回相同的值:混合使用正負(fù)值是不允許的,會(huì)拋出一個(gè)錯(cuò)誤:NA和NULL值NA:缺失值,NULL:不存在的值。subset()函數(shù),在向量中篩選符合條件的值,它可以自動(dòng)過(guò)濾NA值。>x<-c(2,4,6,8,1,NA)>subset(x,x>5)[1]6,8>x[x>5][1]6,8,NA>x<-c(2,4,6,NA)>mean(x)[1]NA>mean(x,na.rm=T)[1]4>x<-c(2,4,6,NULL)>mean(x)4向量索引which()函數(shù)將返回邏輯向量中為T(mén)RUE的位置。which.min和which.max分別是which(min(x))和which(max(x))的簡(jiǎn)寫(xiě):>x<-c(2,4,6,8,1)>which(x>3)[1]234>which.min(x)[1]5>which.max(x)[1]4向量編輯R語(yǔ)言可以對(duì)已經(jīng)創(chuàng)建好的向量直接進(jìn)行元素?cái)U(kuò)展及刪除等編輯操作。向量中元素的刪除通過(guò)減號(hào)加元素下標(biāo)的形式實(shí)現(xiàn)。例:向量元素的擴(kuò)展及刪除#向量編輯>x<-c(1,2,3,4)#向量擴(kuò)展>(x<-c(x,c(5,6,7)))[1]1234567#單個(gè)元素的刪除>(x<-x[-1])[1]234567#多個(gè)元素的刪除>(x<-x[c(3:5)])[1]456使用sort()等函數(shù)進(jìn)行排序。向量排序sort()函數(shù)常用參數(shù)常用參數(shù)參數(shù)描述選項(xiàng)x
排序的對(duì)象排序的對(duì)象為數(shù)值型,也可以是字符型。decreasing
排序的順序默認(rèn)設(shè)置為FALSE,即升序排序。設(shè)置為T(mén)RUE時(shí),為降序排序。na.last
是否將缺失值放到序列的最末尾。默認(rèn)設(shè)置為FALSE,設(shè)置為T(mén)RUE時(shí)將向量中的NA值放到序列的最末尾。向量vector用于描述一維數(shù)據(jù),是R語(yǔ)言中最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)形式。矩陣matrix描述二維數(shù)據(jù),和向量相似,其內(nèi)部元素可以是實(shí)數(shù)、復(fù)數(shù)、字符、邏輯型數(shù)據(jù)。矩陣matrix使用兩個(gè)下標(biāo)來(lái)訪問(wèn)元素,A[i,j]表示矩陣A第i行、第j列的元素。多維數(shù)組array描述多維數(shù)據(jù)。array有一個(gè)特征屬性叫維數(shù)向量(dim屬性),它的長(zhǎng)度是多維數(shù)組的維數(shù),dim內(nèi)的元素則是對(duì)應(yīng)維度的長(zhǎng)度。矩陣是數(shù)組的特殊情況,它具有兩個(gè)維度。數(shù)據(jù)結(jié)構(gòu):矩陣和數(shù)組matrix()函數(shù),以向量形式輸入矩陣中的全部元素,使用ncol和nrow設(shè)置矩陣的行和列數(shù)。注意向量1~10是按列填充的,如果想要以行為單位填充,則可以將參數(shù)byrow設(shè)置為T(mén)RUE。矩陣創(chuàng)建>(w<-seq(1:10))[1]12345678910>(a<-matrix(w,nrow=5,ncol=2))[,1][,2][1,]16[2,]27[3,]38[4,]49[5,]510>(a<-matrix(w,nrow=5,ncol=2,byrow=T))[,1][,2][1,]12[2,]34[3,]56[4,]78[5,]910在創(chuàng)建矩陣時(shí),也可以使用dimnames參數(shù)設(shè)置行和列的名稱。矩陣創(chuàng)建>(a<-matrix(w,nrow=5,ncol=2,byrow=T,dimnames=list(paste0('r',1:5),paste0('l',1:2))))l1l2r112r234r356r478r5910函數(shù)cbind()把其橫向拼成一個(gè)大矩陣,rbind()把其縱向拼成一個(gè)大矩陣。合并cbind()時(shí)高度(行數(shù))應(yīng)該相等。rbind()合并時(shí)寬度相等。如果參與合并的變量不一致,則循環(huán)不足后合并。矩陣合并>(x1<-cbind(c(1,2),c(3,4)))[,1][,2][1,]13[2,]24>(x1<-rbind(c(1,2),c(3,4)))[,1][,2][1,]12[2,]34>cbind(x1,1)[,1][,2][,3][1,]121[2,]341矩陣的拉直設(shè)A是一個(gè)矩陣,則函數(shù)as.vector(A)可以將矩陣轉(zhuǎn)化為向量。如:>(A<-matrix(1:6,2,3))[,1][,2][,3][1,]135[2,]246>as.vector(A)[1]123456矩陣的行或列計(jì)算colSums()對(duì)矩陣各列求和colMeans()求矩陣各列的均值rowSums()對(duì)矩陣各行求和rowMeans()求矩陣各列的均值>(A<-matrix(1:16,4,4))[,1][,2][,3][,4][1,]15913[2,]261014[3,]371115[4,]481216>colSums(A)[1]10264258>colMeans(A)[1]2.56.510.514.5>rowSums(A)[1]28323640>rowMeans(A)[1]78910R語(yǔ)言中有豐富的矩陣運(yùn)算的函數(shù),包括四則運(yùn)算、對(duì)矩陣各行列的求和、對(duì)矩陣各行列的求均值、轉(zhuǎn)置等。矩陣的運(yùn)算函數(shù)功能+-*/四則運(yùn)算,要求矩陣的維數(shù)相同,對(duì)對(duì)應(yīng)位置的各元素進(jìn)行運(yùn)算colSums()對(duì)矩陣的各列求和rowSums()對(duì)矩陣的各行求和colMeans()對(duì)矩陣的各列求均值rowMeans()對(duì)矩陣的各行求均值t()對(duì)矩陣的行列進(jìn)行轉(zhuǎn)置det()求解方陣的行列式outer()求解矩陣的外積(叉積)%*%矩陣乘法,要求第一個(gè)矩陣的列數(shù)與第二個(gè)矩陣的行數(shù)相同diag()對(duì)矩陣取對(duì)角元素,若對(duì)象為向量,則生成以向量為對(duì)角元素的對(duì)角矩陣solve()對(duì)矩陣求解逆矩陣,要求矩陣可逆x[i,j] 下標(biāo)為(i,j)的元素x[i,] 第i行x[,j] 第j列x[,c(1,3)]第1和3列x["name",]名為"name"的行矩陣索引數(shù)組是矩陣的擴(kuò)展,它把數(shù)據(jù)的維度擴(kuò)展到兩個(gè)以上。通過(guò)函數(shù)array()方便地創(chuàng)建數(shù)組。數(shù)組創(chuàng)建建立一個(gè)三維數(shù)據(jù)的數(shù)組,其維度是2*5*3。在結(jié)果中會(huì)依次展示3個(gè)2行5列的矩陣。>(w_array<-array(1:30,dim=c(2,5,3))),,1[,1][,2][,3][,4][,5][1,]13579[2,]246810,,2[,1][,2][,3][,4][,5][1,]1113151719[2,]1214161820,,3[,1][,2][,3][,4][,5][1,]2123252729[2,]2224262830對(duì)于矩陣和數(shù)組,dim()
函數(shù)將返回其維度的整數(shù)值向量:對(duì)于矩陣,函數(shù)nrow()
和ncol()
將分別返回行數(shù)和列數(shù):矩陣行、列和維度>a_matrix<-matrix(1:10,nrow=5,ncol=2)>w_array<-array(1:30,dim=c(2,5,3))>dim(a_matrix)[1]52>dim(w_array)[1]253>nrow(a_matrix)[1]5>ncol(a_matrix)[1]2建立下圖所示的矩陣:對(duì)第2行、第3列進(jìn)行索引練習(xí)v1v2v3v4u112710u234811u356912數(shù)據(jù)框data.frame和列表list,也是一個(gè)二維數(shù)據(jù)。在使用R語(yǔ)言進(jìn)行數(shù)據(jù)分析和挖掘的過(guò)程中,向量和數(shù)據(jù)框的使用頻率是最高的,list則在存儲(chǔ)較復(fù)雜的數(shù)據(jù)時(shí)作為數(shù)據(jù)對(duì)象類型。數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)框和列表數(shù)據(jù)框是僅次于向量的最重要的數(shù)據(jù)對(duì)象類型。在實(shí)際操作中,通常會(huì)用數(shù)據(jù)框的一列代表某一變量屬性的所有取值,用一行代表某一樣本數(shù)據(jù)。data.frame()函數(shù)可以直接把多個(gè)向量建立為一個(gè)數(shù)據(jù)框,并為列設(shè)置名稱。數(shù)據(jù)框創(chuàng)建>(my.datasheet<-data.frame(site=c('A','B','A','A','B'),+season=c('winter','summer','summer','spring','fall'),+pH=c(7.4,6.3,8.6,7.2,8.9)))siteseasonpH1Awinter7.42Bsummer6.33Asummer8.64Aspring7.25Bfall8.9可以通過(guò)names(<數(shù)據(jù)框>)來(lái)讀取并編輯列名稱。數(shù)據(jù)框創(chuàng)建>names(my.datasheet)[1]"site""season""pH">names(my.datasheet)[1]<-'type'>names(my.datasheet)[1]"type""season""pH"索引列<數(shù)據(jù)框?qū)ο?gt;[,列下標(biāo)向量],直接獲取相應(yīng)列的所有元素,并以數(shù)據(jù)框?qū)ο笮问椒祷?。例:iris[,2]索引行<數(shù)據(jù)框?qū)ο?gt;[行下標(biāo),],直接獲取相應(yīng)行的所有元素,例如:iris[1:2,]數(shù)據(jù)框索引列名稱索引列下標(biāo)索引<數(shù)據(jù)框?qū)ο?gt;$列名稱<數(shù)據(jù)框?qū)ο?gt;[[“名稱”]]<數(shù)據(jù)框?qū)ο?gt;[[列下標(biāo)]]<數(shù)據(jù)框?qū)ο?gt;[,列下標(biāo)]iris$Sepal.Lengthiris[["Sepal.Length"]]iris[[2]]iris[,2]iris[1:2,]list()可以用于創(chuàng)建列表對(duì)象。例:以下對(duì)象my.list由三個(gè)成分組成:第一個(gè)是名稱為stud.id的數(shù)值,第二個(gè)是名稱為的字符串,第三個(gè)是名稱為stud.marks的數(shù)值向量。列表創(chuàng)建>(my.list<-list(stud.id=34453,+='張三',+stud.marks=c(14.3,12,15,19)))$stud.id[1]34453$[1]"張三"$stud.marks[1]14.312.015.019.0可以使用函數(shù)length()來(lái)檢查列表成分的個(gè)數(shù)可以通過(guò)函數(shù)unlist()把列表中的所有元素轉(zhuǎn)換為向量元素,轉(zhuǎn)換后的向量元素的個(gè)數(shù)和列表中所有數(shù)據(jù)對(duì)象的個(gè)數(shù)相同。列表創(chuàng)建>unlist(my.list)stud.idstud.marks1stud.marks2stud.marks3stud.marks4"34453""張三""14.3""12""15""19“>length(my.list)[1]3列表索引索引x[n] 列表顯示元素nx[[n]] 列表的第n個(gè)元素x[["name"]]名為"name"的元素x$name 同上.因子提供了一個(gè)簡(jiǎn)單而又緊湊的形式來(lái)處理分類數(shù)據(jù)。因子用level(水平)來(lái)表示所有可能的取值。如果數(shù)據(jù)集有取值個(gè)數(shù)固定的分類變量,因子特別有用。通過(guò)factor()函數(shù)創(chuàng)建因子,使用格式:factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x),nmax=NA)數(shù)據(jù)結(jié)構(gòu):因子通過(guò)factor()函數(shù)創(chuàng)建因子,參數(shù)如下。創(chuàng)建因子參數(shù)描述x表示需要?jiǎng)?chuàng)建為因子的數(shù)據(jù),是一個(gè)向量levels表示所創(chuàng)建的因子數(shù)據(jù)的水平,如果不指定的話,就是x中不重復(fù)的所有值labels用來(lái)標(biāo)識(shí)這一水平的名稱,與水平一一對(duì)應(yīng),方便用戶識(shí)別exclude表示有哪些水平是不需要的ordered一個(gè)邏輯值,若為T(mén)RUE,表示有序因子,為FALSE則表示無(wú)序因子nmax表示水平個(gè)數(shù)的上限通過(guò)gl()函數(shù)創(chuàng)建因子。創(chuàng)建因子使用格式:gl(n,k,length=n*k,labels=seq_len(n),ordered=FALSE)參數(shù)描述n表示因子水平的個(gè)數(shù)k表示每個(gè)水平的重復(fù)數(shù)length表示生成的序列的長(zhǎng)度labels一個(gè)n維向量,表示因子水平ordered一個(gè)邏輯值,若為T(mén)RUE,表示有序因子,為FALSE則表示無(wú)序因子通過(guò)下面的例子,可以加深理解因子的儲(chǔ)存形式。因子型數(shù)據(jù)的儲(chǔ)存原理>chr<-c('R','Python','R','Ruby','Lisp','R')>class(chr)[1]"character">(f<-factor(chr))[1]RPythonRRubyLispRLevels:LispPythonRRuby>class(f)[1]"factor">storage.mode(f)[1]"integer">as.numeric(f)[1]323413>levels(f)[1]"Lisp""Python""R""Ruby"通過(guò)這個(gè)例子,可以知道f的類型是整數(shù)形式,并且1對(duì)應(yīng)的是“Lisp”,2對(duì)應(yīng)的是“Python”,3對(duì)應(yīng)的是“R”,4對(duì)應(yīng)的是“Ruby”,這些是按照字母順序排序的。小結(jié)數(shù)據(jù)類型數(shù)值型(numeric)、字符型(character)、復(fù)數(shù)型(complex)、邏輯型(logical)、特殊值數(shù)據(jù)結(jié)構(gòu)向量(vector)、數(shù)組(array)、矩陣(matrix)、數(shù)據(jù)框(dataframe)、列表(list)、因子(factor)綜合實(shí)驗(yàn)鞏固R語(yǔ)言數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的概念。掌握數(shù)據(jù)對(duì)象轉(zhuǎn)換和辨別函數(shù)的使用方法。掌握向量、矩陣、數(shù)組、數(shù)據(jù)框、列表、因子的常用方法,并能靈活綜合運(yùn)用。熟悉集成開(kāi)發(fā)環(huán)境RStudio。能夠通過(guò)help方法自學(xué)函數(shù)及其中參數(shù)的用法。實(shí)驗(yàn)?zāi)繕?biāo)第2章講義中的案例第2章綜合實(shí)驗(yàn)第2章使用的函數(shù)第2章思考與練習(xí)實(shí)驗(yàn)內(nèi)容及資料目標(biāo):掌握數(shù)據(jù)對(duì)象轉(zhuǎn)換和辨別函數(shù)的使用方法。內(nèi)容:學(xué)習(xí)R中常見(jiàn)數(shù)據(jù)類型的辨別與轉(zhuǎn)換函數(shù),從中選擇3-5個(gè)函數(shù)編程實(shí)現(xiàn),并分析數(shù)據(jù)對(duì)象的類型。思路:數(shù)據(jù)類型的辨別與轉(zhuǎn)換數(shù)據(jù)類型的查看實(shí)驗(yàn)1:數(shù)據(jù)對(duì)象的轉(zhuǎn)換數(shù)據(jù)類型辨別函數(shù)轉(zhuǎn)換函數(shù)數(shù)值型(numeric)is.numeric()as.numeric()字符型(character)is.character()as.character()邏輯型(logical)is.logical()as.logical()復(fù)數(shù)型(complex)plex()plex()整數(shù)型(integer)eger()eger()浮點(diǎn)型(double)is.double()as.double()特殊值(NA)is.na()as.na()mode()class()typeof()目標(biāo):學(xué)習(xí)R語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的概念,掌握向量的運(yùn)用。內(nèi)容:實(shí)驗(yàn)2:向量A班《微積分》與《線性代數(shù)》成績(jī)?nèi)缦拢何⒎e分
1008877665544線性代數(shù)997060873191(1)利用R語(yǔ)言向量求出班里人數(shù)(2)求出微積分成績(jī)的最大值和最小值length(x)#判斷向量的長(zhǎng)度which.min(x)#求向量的最小值所在的位置x[which.min(x)]#索引最小值位置的數(shù)值目標(biāo):學(xué)習(xí)R語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的概念,掌握矩陣的運(yùn)用。內(nèi)容:實(shí)驗(yàn)3:矩陣1.創(chuàng)建矩陣(1)將已有數(shù)據(jù)轉(zhuǎn)化為矩陣(2)特殊矩陣的快捷創(chuàng)建方法2.矩陣的查看(1)查看矩陣的維數(shù)(2)提取矩陣的行數(shù)與列數(shù)(3)引用元素(4)給行列命名(5)調(diào)用行列名3.矩陣的運(yùn)算(1)將多個(gè)矩陣合并(2)矩陣的加減乘(3)矩陣的逆(4)矩陣的轉(zhuǎn)置(5)特征值分解實(shí)驗(yàn)3:矩陣matrixmatrix(0,nrow=3,ncol=3)diag(rep(1,4)))#創(chuàng)建一個(gè)對(duì)角線上全是1的矩陣,diag為對(duì)角矩陣diag(1:4)#創(chuàng)建一個(gè)對(duì)角線上元素不同的矩陣dim()#查看矩陣的維數(shù)nrow()#查看矩陣的行數(shù)ncol()#查看矩陣的列數(shù)colnames(M)=paste0(“x_”,1:4)#給矩陣的列命名rownames(M)=1:3#給矩陣的行命名rbind(A,B)#將矩陣列對(duì)齊,行相加(r代表行,row)cbind(A,B)#將矩陣行對(duì)齊,列相加(c代表列,col)solve()#矩陣的逆t()#矩陣的轉(zhuǎn)置實(shí)驗(yàn)3:矩陣設(shè)有如下所示矩陣(1)創(chuàng)建矩陣,將上述矩陣存入變量x中;(2)將列向量(2,3,4)合并到矩陣x中得到矩陣y;(3)求矩陣y與yT(可以將yT命名為z)之和m,并在m中檢索出下標(biāo)為[2,3]的元素輸出。122335matrix(c(1,2,3,2,3,5),nrow=3)cbind(x,c(2,3,4))#矩陣和合并z<-t(y)#求y的轉(zhuǎn)置m<-y+z#求和目標(biāo):學(xué)習(xí)R語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的概念,掌握數(shù)組的運(yùn)用。內(nèi)容:實(shí)驗(yàn)4:數(shù)組(1)創(chuàng)建數(shù)組(2)數(shù)組維度的查看(3)數(shù)組的復(fù)制(4)數(shù)組的四則運(yùn)算(5)數(shù)組的調(diào)用(6)數(shù)組元素的訪問(wèn)#創(chuàng)建數(shù)組,數(shù)組維數(shù)為3,各維度值為2,3,4array(1:24,c(2,3,4))array(1:6,c(1,2,3),dimnames=list(c("A1"),c("B1","B2"),c("C1","C2","C3")))dim(z)#查看數(shù)組維度a[1,,]#調(diào)用每一組矩陣中的第一行result<-apply(result,c(1),sum)#計(jì)算合計(jì)值實(shí)驗(yàn)4:數(shù)組創(chuàng)建一個(gè)3維數(shù)組(數(shù)組中數(shù)據(jù)為連續(xù)整數(shù),從1開(kāi)始),各維度下標(biāo)的最大值為2,3,4。數(shù)組各維度的名稱定義如下:dim1:("A1","A2")dim2:("B1","B2","B3")dim3:("C1","C2","C3","C4")(1)按要求創(chuàng)建數(shù)組z;(2)查看數(shù)組維度;(3)索引下標(biāo)為[2,3,2]的元素,索引維度名稱為["A2","B3","C2"]的元素并將其值修改為30。z["A2","B3","C2"]<-30#將["A2","B3","C2"]這個(gè)位置的值由12改為30目標(biāo):學(xué)習(xí)R語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的概念,掌握數(shù)據(jù)框的運(yùn)用。內(nèi)容:實(shí)驗(yàn)5:數(shù)據(jù)框基于表格,創(chuàng)建數(shù)據(jù)框并進(jìn)行以下操作。(1)查看數(shù)據(jù)框中的“altitude”列數(shù)據(jù)(索引列);(2)查看數(shù)據(jù)框中的“sample2”“sample3”行數(shù)據(jù)(索引行);(3)索引第3行第4列的元素;(4)編輯“family”列,將其修改成“genus”;(5)刪除數(shù)據(jù)框的第2行第3列。samplespeciesfamilyaltitudetypesample14015600type1sample25112350type2sample34611390type2sample43812260type3sample54910220type3實(shí)驗(yàn)5:數(shù)據(jù)框nature<-data.frame()#創(chuàng)建數(shù)據(jù)框nature[,4]#索引第四列nature$altitude#按列的名稱索引nature[2:3,]#索引第2至3行names(nature)#讀取數(shù)據(jù)框中列名稱nature<-nature[-2,-3]#刪除數(shù)據(jù)框的第2行第3列目標(biāo):學(xué)習(xí)R語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的概念,掌握列表的運(yùn)用。內(nèi)容:實(shí)驗(yàn)6:列表基于以下情景和數(shù)據(jù),在R中創(chuàng)建列表并實(shí)現(xiàn)以下功能:現(xiàn)有5種鮮花,對(duì)其大小、顏色列表如下:name:rose,lily,daisy,narcissus,peonysize:M,B,S,M,Bcolor:R,W,W,W,R(1)檢查列表成分的個(gè)數(shù);(2)用兩種方式索引第一列;(3)索引第二列第四個(gè)元素,并將其修改為S;(4)增加香味fragrance列,依次為(T,T,F(xiàn),T,T)實(shí)驗(yàn)6:列表#創(chuàng)建列表mylist<-list(name=c(“rose“,”lily”,”daisy”,“narcissus”,“peony“),size=c(“M“,“B“,“S“,“M“,“B“),color=c(“R”,“W”,“W”,“W”,“R”))list(name=c(“Tom”),score=c(“89”,“94”,“87”))unlist()length()mylist[1]#索引第一列mylist[[2]][4]<-“S”#.索引第二列第四個(gè)元素,并將其修改為Smylist$fragrance<-c(“T”,“T”,“F”,“T”,“T”)#增加列表目標(biāo):學(xué)習(xí)R語(yǔ)言數(shù)據(jù)結(jié)構(gòu)的概念,掌握因子的運(yùn)用。內(nèi)容:實(shí)驗(yàn)7:因子使用factor()函數(shù)創(chuàng)建一個(gè)因子x;求該因子的個(gè)數(shù);獲取該因子的名稱;獲取該因子的有序數(shù)據(jù)。實(shí)驗(yàn)7:因子#創(chuàng)建因子week<-factor(c(“Fri“,“Mon“,“Mon“,“Tues“,“Sun“,“Sat“,“Wedn“,“Fri","Thur"))nlevels(week)#使用nlevels()函數(shù)求因子的個(gè)數(shù)as.numeric(week)#向量和整數(shù)的映射關(guān)系levels(week)#使用levels()函數(shù)獲取因子的名稱ordered(week)#使用ordered()函數(shù)獲取因子的有序數(shù)據(jù)思考與討論數(shù)據(jù)管理控制結(jié)構(gòu)編寫(xiě)函數(shù)apply函數(shù)族數(shù)據(jù)輸入與輸出綜合實(shí)驗(yàn)?zāi)夸?37控制結(jié)構(gòu)R是塊狀結(jié)構(gòu)程序語(yǔ)言塊由大括號(hào){}劃分程序語(yǔ)句換行符或“;”分割基本控制結(jié)構(gòu)順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)控制結(jié)構(gòu)分支結(jié)構(gòu)分支語(yǔ)句:if-elseswitch語(yǔ)句可以直接實(shí)現(xiàn)多分支語(yǔ)句。如果條件式結(jié)果等于n,則執(zhí)行第n條分支的處理;如果取值不符合條件,則返回值是NULL。分支結(jié)構(gòu)分支語(yǔ)句:switch分支語(yǔ)句>p<--0.01>{+if(p<0)+print("p<0!")+else+print("p>0!")+}[1]"p<0!">c(1:3,5)[1]1235>for(iinc(1:3,5))+print(switch(i,"A","B","C","D"))
[1]"A"[1]"B"[1]"C"NULL循環(huán)結(jié)構(gòu)控制語(yǔ)句描
述break語(yǔ)句終止循環(huán)語(yǔ)句,執(zhí)行循環(huán)后的下一語(yǔ)句next語(yǔ)句跳過(guò)本次循環(huán),執(zhí)行下一次循環(huán)循環(huán)類型描
述for循環(huán)基本的循環(huán)語(yǔ)句,變量的遍歷while循環(huán)類似for語(yǔ)句,滿足條件執(zhí)行循環(huán)體repeat循環(huán)多次執(zhí)行,滿足條件退出循環(huán)循環(huán)結(jié)構(gòu)循環(huán)語(yǔ)句:for>pv<-c(40,55,70,95,82,100,66,90)>m<-1>result<-"">for(iinpv){+if(i<60){+result[m]<-"需要加
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)公司補(bǔ)充合同范本
- 汽車維修外協(xié)合同范本
- 兼職合同范本15篇
- 幕墻工程合同范本
- 創(chuàng)客合同范本
- 協(xié)調(diào)服務(wù)合同范例
- 南京監(jiān)理公司合同范本
- 古宅出售合同范本
- 變壓器試驗(yàn)合同范本
- 與飯店合作合同范本
- 加油站合作經(jīng)營(yíng)協(xié)議書(shū)范本
- 人工智能對(duì)輿情管理的價(jià)值
- 地理-河南省部分重點(diǎn)高中九師聯(lián)盟2024-2025學(xué)年高三下學(xué)期2月開(kāi)學(xué)考試試題和答案
- 老年護(hù)理相關(guān)法律法規(guī)
- 《陶瓷工藝技術(shù)》課件
- 變更強(qiáng)制措施的申請(qǐng)書(shū)
- 供電所安全演講
- 供應(yīng)鏈韌性提升與風(fēng)險(xiǎn)防范-深度研究
- 《淞滬會(huì)戰(zhàn)》課件
- 《智能制造技術(shù)基礎(chǔ)》課件-第4章 加工過(guò)程的智能監(jiān)測(cè)與控制
- 初一家長(zhǎng)會(huì)課件96108
評(píng)論
0/150
提交評(píng)論