版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章程序邏輯結(jié)構(gòu)函數(shù)判斷循環(huán)創(chuàng)建自己的R語言程序目錄函數(shù)是一個(gè)組織在一起的一組以執(zhí)行特定任務(wù)的語句。R語言有大量的內(nèi)置函數(shù),用戶也可以創(chuàng)建自己的函數(shù)。函數(shù)PART01WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.1.1使用已存在的函數(shù)一、數(shù)據(jù)管理類函數(shù)函數(shù)名函數(shù)描述vector:向量numeric:數(shù)值型向量logical:邏輯型向量character;字符型向量list:列表data.frame:數(shù)據(jù)框c:連接為向量或列表length:求長(zhǎng)度subset:求子集seq,from:to,sequence:等差序列rep:重復(fù)NA:缺失值NULL:空對(duì)象sort,order,unique,rev:排序unlist:展平列表attr,attributes:對(duì)象屬性mode,typeof:對(duì)象存儲(chǔ)模式與類型names:對(duì)象的名字屬性表數(shù)據(jù)結(jié)構(gòu)的相關(guān)函數(shù)二、字符串處理character:字符型向量nchar:字符數(shù)substr:取子串format,formatC:把對(duì)象用格式轉(zhuǎn)換為字符串paste,strsplit:連接或拆分charmatch,pmatch:字符串匹配grep,sub,gsub:模式匹配與替換三、復(fù)數(shù)complex,Re,Im,Mod,Arg,Conj:復(fù)數(shù)函數(shù)四、因子factor:因子codes:因子的編碼levels:因子的各水平的名字nlevels:因子的水平個(gè)數(shù)cut:把數(shù)值型對(duì)象分區(qū)間轉(zhuǎn)換為因子table:交叉頻數(shù)表split:按因子分組aggregate:計(jì)算各數(shù)據(jù)子集的概括統(tǒng)計(jì)量tapply:對(duì)“不規(guī)則”數(shù)組應(yīng)用函數(shù)數(shù)學(xué)相關(guān)計(jì)算函數(shù)一、計(jì)算函數(shù)名函數(shù)描述+,-,*,/,^,%%,%/%:四則運(yùn)算ceiling,floor,round,signif,trunc,zapsmall:舍入max,min,pmax,pmin:最大最小值range:最大值和最小值sum,prod:向量元素和積cumsum,cumprod,cummax,cummin:累加、累乘sort:排序approx和approxfun:插值diff:差分sign:符號(hào)函數(shù)二、數(shù)學(xué)函數(shù)abs,sqrt:絕對(duì)值,平方根log,exp,log10,log2:對(duì)數(shù)與指數(shù)函數(shù)sin,cos,tan,asin,acos,atan,atan2:三角函數(shù)sinh,cosh,tanh,asinh,acosh,atanh:雙曲函數(shù)beta,lbeta,gamma,lgamma,digamma,trigamma,tetragamma,pentagamma,choose,lchoose:與貝塔函數(shù)、伽瑪函數(shù)、組合數(shù)有關(guān)的特殊函數(shù)fft,mvfft,convolve:富利葉變換及卷積polyroot:多項(xiàng)式求根poly:正交多項(xiàng)式spline,splinefun:樣條差值besselI,besselK,besselJ,besselY,gammaCody:Bessel函數(shù)deriv:簡(jiǎn)單表達(dá)式的符號(hào)微分或算法微分三、數(shù)組Array:建立數(shù)組matrix:生成矩陣data.matrix:把數(shù)據(jù)框轉(zhuǎn)換為數(shù)值型矩陣lower.tri:矩陣的下三角部分mat.or.vec:生成矩陣或向量t:矩陣轉(zhuǎn)置cbind:把列合并為矩陣rbind:把行合并為矩陣diag:矩陣對(duì)角元素向量或生成對(duì)角矩陣aperm:數(shù)組轉(zhuǎn)置nrow,ncol:計(jì)算數(shù)組的行數(shù)和列數(shù)dim:對(duì)象的維向量dimnames:對(duì)象的維名row/colnames:行名或列名%*%:矩陣乘法crossprod:矩陣交叉乘積(內(nèi)積)outer:數(shù)組外積kronecker:數(shù)組的Kronecker積apply:對(duì)數(shù)組的某些維應(yīng)用函數(shù)tapply:對(duì)“不規(guī)則”數(shù)組應(yīng)用函數(shù)sweep:計(jì)算數(shù)組的概括統(tǒng)計(jì)量aggregate:計(jì)算數(shù)據(jù)子集的概括統(tǒng)計(jì)量scale:矩陣標(biāo)準(zhǔn)化matplot:對(duì)矩陣各列繪圖cor:相關(guān)陣或協(xié)差陣Contrast:對(duì)照矩陣row:矩陣的行下標(biāo)集col:求列下標(biāo)集四、線性代數(shù)solve:解線性方程組或求逆eigen:矩陣的特征值分解svd:矩陣的奇異值分解backsolve:解上三角或下三角方程組chol:Choleski分解qr:矩陣的QR分解chol2inv:由Choleski分解求逆五、邏輯運(yùn)算<,>,<=,>=,==,!=:比較運(yùn)算符!,&,&&,|,||,xor():邏輯運(yùn)算符logical:生成邏輯向量all,any:邏輯向量都為真或存在真ifelse():二者擇一match,%in%:查找unique:找出互不相同的元素which:找到真值下標(biāo)集合duplicated:找到重復(fù)元素六、優(yōu)化及求根optimize,uniroot,polyroot:一維優(yōu)化與求根程序設(shè)計(jì)類函數(shù)一、控制結(jié)構(gòu)函數(shù)名函數(shù)描述if,else,ifelse,switch:分支for,while,repeat,break,next:循環(huán)apply,lapply,sapply,tapply,sweep:替代循環(huán)的函數(shù)。二、函數(shù)方面function:函數(shù)定義source:調(diào)用文件call:函數(shù)調(diào)用.C,F(xiàn)ortran:調(diào)用C或者Fortran子程序的動(dòng)態(tài)鏈接庫Recall:遞歸調(diào)用browser,debug,trace,traceback:程序調(diào)試options:指定系統(tǒng)參數(shù)missing:判斷虛參是否有對(duì)應(yīng)實(shí)參nargs:參數(shù)個(gè)數(shù)stop:終止函數(shù)執(zhí)行on.exit:指定退出時(shí)執(zhí)行eval,expression:表達(dá)式計(jì)算system.time:表達(dá)式計(jì)算計(jì)時(shí)invisible:使變量不顯示menu:選擇菜單(字符列表菜單)三、輸入輸出cat,print:顯示對(duì)象sink:輸出轉(zhuǎn)向到指定文件dump,save,dput,write:輸出對(duì)象can,read.table,load,dget:讀入四、工作環(huán)境ls,objects:顯示對(duì)象列表rm,remove:刪除對(duì)象q,quit:退出系統(tǒng)First,.Last:初始運(yùn)行函數(shù)與退出運(yùn)行函數(shù)。options:系統(tǒng)選項(xiàng)?,help,help.start,apropos:幫助功能data:列出數(shù)據(jù)集函數(shù)名函數(shù)描述norm:正態(tài)t:t分布f:F分布chisq:卡方(包括非中心)unif:均勻exp:指數(shù)weibull:威布爾gamma:伽瑪beta:貝塔lnorm:對(duì)數(shù)正態(tài)logis:邏輯分布cauchy:柯西binom:二項(xiàng)分布geom:幾何分布hyper:超幾何nbinom:負(fù)二項(xiàng)pois:泊松signrank:符號(hào)秩,wilcox:秩和tukey:學(xué)生化極差統(tǒng)計(jì)分布函數(shù)多元分析函數(shù)函數(shù)名函數(shù)描述cor,cov.wt,var:協(xié)方差陣及相關(guān)陣計(jì)算biplot,biplot.princomp:多元數(shù)據(jù)biplot圖cancor:典則相關(guān)princomp:主成分分析hclust:譜系聚類kmeans:k-均值聚類cmdscale:經(jīng)典多維標(biāo)度函數(shù)名函數(shù)描述ts:時(shí)間序列對(duì)象diff:計(jì)算差分time:時(shí)間序列的采樣時(shí)間window:時(shí)間窗時(shí)間序列函數(shù)統(tǒng)計(jì)模型函數(shù)函數(shù)名函數(shù)描述lm線性模型glm廣義線性模型aov方差分析網(wǎng)絡(luò)瀏覽類函數(shù)和文件操作函數(shù)網(wǎng)絡(luò)瀏覽類函數(shù)函數(shù)名函數(shù)描述browseURL:瀏覽某個(gè)指定的網(wǎng)頁download.file:下載網(wǎng)絡(luò)文件到本地文件操作函數(shù)名函數(shù)描述dir.create:新建一個(gè)文件夾list.dirs:顯示目錄下的文件夾list.files:顯示目錄下的文檔file.create:文檔創(chuàng)建file.exists:判斷文檔是否存在file.remove:文檔刪除file.rename:重命名file.append:文檔添加file.copy:文檔復(fù)制file.symlink(from,to)
file.show:顯示文檔內(nèi)容:顯示文檔信息file.edit:編輯文檔zip:壓縮文件unzip:解壓縮文件WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.1.2自定義函數(shù)函數(shù)定義使用function關(guān)鍵字,一般格式為函數(shù)名<-function(形式參數(shù)表)函數(shù)體函數(shù)體是一個(gè)表達(dá)式或復(fù)合表達(dá)式(復(fù)合語句),以復(fù)合表達(dá)式中最后一個(gè)表達(dá)式為返回值,也可以用return(x)返回x的值。如果函數(shù)需要返回多個(gè)結(jié)果,可以打包在一個(gè)列表(list)中返回。形式參數(shù)表相當(dāng)于函數(shù)自變量,可以是空的,形式參數(shù)可以有缺省值,R的函數(shù)在調(diào)用時(shí)都可以用“形式參數(shù)名=實(shí)際參數(shù)”的格式輸入自變量值。一個(gè)自定義R函數(shù)由三個(gè)部分組成:? 函數(shù)體body(),即要函數(shù)定義內(nèi)部要執(zhí)行的代碼;? formals(),即函數(shù)的形式參數(shù)表以及可能存在的缺省值;? environment(),是函數(shù)定義時(shí)所處的環(huán)境,這會(huì)影響到參數(shù)表中缺省值與函數(shù)體中非局部變量的的查找。判斷PART02WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.2.1if和else語句if條件語句僅在滿足條件表達(dá)式時(shí)執(zhí)行。條件表達(dá)式運(yùn)算符(比較運(yùn)算符)有>=,>,<=,<,==(是否等于),!=(不相等)。if語句的語法形式是:if(條件)表達(dá)式1注意if后面的表達(dá)式的必須有小括號(hào)()。其中的“條件”為一個(gè)標(biāo)量的真或假值,不允許取缺失值,表達(dá)式可以是用大括號(hào)包圍的復(fù)合表達(dá)式。如if(is.na(lambda))lambda<-0.5WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.2.2ifelse函數(shù)R語言講究簡(jiǎn)潔,ifelse是if-else語句的緊湊方式,輸出是向量。語法形式:
ifelse(cond,表達(dá)式1,表達(dá)式2)函數(shù)ifelse()可以根據(jù)一個(gè)邏輯向量中的多個(gè)條件,分別選擇不同結(jié)果。函數(shù)ifelse(test,yes,no)中的test是邏輯向量,yes和no是向量,test、yes和no的配合符合向量化原則,如果有長(zhǎng)度為1的或者長(zhǎng)度較短但其倍數(shù)等于最長(zhǎng)一個(gè)的長(zhǎng)度的,短的一個(gè)自動(dòng)從頭循環(huán)使用。不同于if語句,ifelse的test中運(yùn)行有缺失值,對(duì)應(yīng)結(jié)果也是缺失值。dplyr包的case_when函數(shù)可以看成是ifelse的多分支推廣,或看成`if-elseif-else語句的向量化??梢栽O(shè)定多個(gè)向量化的分支,每個(gè)分支有對(duì)應(yīng)的輸出值。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.2.3switch語句switch語句根據(jù)條件表達(dá)式的多個(gè)值選擇一個(gè)語句執(zhí)行。語法形式:
switch(cond,表達(dá)式1,表達(dá)式2,...,表達(dá)式n)注意表達(dá)式間的","不能省略。switch語句輸出的是根據(jù)cond選擇的表達(dá)式的值。例:根據(jù)班級(jí)活動(dòng)中同學(xué)當(dāng)時(shí)的情緒反映mood,班干部應(yīng)控制形勢(shì),使活動(dòng)健康活潑又有秩序地進(jìn)行下去>mood=c("sad")>res=switch(mood,+pleased="Iamgladyouarepleased",#字符串應(yīng)有雙引號(hào)“”+afraid="thereisonly'fear'worditself",+sad="cheerup",+angry="calmdownnow"+)>res[1]"cheerup"循環(huán)PART03循環(huán)語句的功能是重復(fù)執(zhí)行一個(gè)語句集合,重復(fù)執(zhí)行的原因是,(1)輸入數(shù)據(jù)有多個(gè)獨(dú)立的元素,每次循環(huán)執(zhí)行一次循環(huán)(2)循環(huán)語句是迭代計(jì)算方式。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.3.1for循環(huán)為了對(duì)向量每個(gè)元素、矩陣每行、矩陣每列循環(huán)處理,語法為for(循環(huán)變量iin序列d){語句}其中的語句一般是復(fù)合語句。如果需要對(duì)某個(gè)向量x按照下標(biāo)循環(huán),獲得所有下標(biāo)序列的標(biāo)準(zhǔn)寫法是seq_along(x),而不用1:n的寫法,因?yàn)樵谔厥馇闆r下n可能等于零,這會(huì)導(dǎo)致錯(cuò)誤下標(biāo),而seq_along(x)在x長(zhǎng)度為零時(shí)返回零長(zhǎng)度的下標(biāo)。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.使用for循環(huán)的注意事項(xiàng): 如果對(duì)向量每個(gè)元素遍歷并保存結(jié)果,應(yīng)在循環(huán)之前先將結(jié)果變量產(chǎn)生等長(zhǎng)的存儲(chǔ),在循環(huán)內(nèi)為已經(jīng)分配好存儲(chǔ)空間的輸出向量的元素賦值。為了產(chǎn)生長(zhǎng)度為n的數(shù)值型向量,用numeric(n);為了產(chǎn)生長(zhǎng)度為n的列表,用vector("list",n)。 對(duì)一個(gè)向量元素遍歷時(shí)如果用下標(biāo)訪問,需要用seq_along(x)的做法而不是1:length(x)的做法。 如果直接對(duì)向量元素遍歷,這有可能會(huì)丟失向量的屬性(如日期型),用下標(biāo)訪問則不存在此問題。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGN8.3.2while循環(huán)while語句在輸入數(shù)據(jù)符合條件表達(dá)式時(shí),執(zhí)行語句體,否則跳出循環(huán)繼續(xù)執(zhí)行程序的下一條語句。語法形式:while(條件表達(dá)式){......}進(jìn)行當(dāng)型循環(huán)。其中的語句一般是復(fù)合語句。僅當(dāng)條件成立時(shí)才繼續(xù)循環(huán),而且如果第一次條件就已經(jīng)不成立就一次也不執(zhí)行循環(huán)內(nèi)的語句。當(dāng)while語句的條件表達(dá)式=TRUE時(shí),只有用break語句跳出循環(huán)。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.3.3repeat循環(huán)
repeat語句沒有邏輯判斷跳出條件,因此必須應(yīng)用break語句。
語法形式:
repeat{......if(cond)break}直到型循環(huán)至少執(zhí)行一次,每次先執(zhí)行...代表的循環(huán)體語句,然后判斷是否滿足循環(huán)退出條件,滿足條件就退出循環(huán)。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.3.4
break跳出循環(huán)break語句跳出循環(huán)。實(shí)例原始數(shù)據(jù)框df2的格式與表8.1相同,則通過初步獎(jiǎng)學(xué)金認(rèn)定的人數(shù)為for(iin1:2017)for(jin2:6)if(df2[i,j]<60){cat(‘學(xué)生姓名’,df2[i,1],’不能參加獎(jiǎng)學(xué)金評(píng)選’)break}8.3.5
next跳過該循環(huán)
next語句的功能與C語言的continue一樣。跳過本次循環(huán)其他部分,到下一次循環(huán)開始執(zhí)行。創(chuàng)建自己的R語言程序PART04通常,我們可以通過在腳本文件中編寫程序來執(zhí)行編程,然后在命令提示符下使用R解釋器(稱為Rscript)來執(zhí)行這些腳本。WelcomeMessageMULTIPURPOSEPRESENTATIONTEMPLATE|UNIQUEDESIGNPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.8.4.1
Source與RScript有些時(shí)候如果將所有代碼都寫到一個(gè)文件之
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲業(yè)成本控制與預(yù)算管理指南(標(biāo)準(zhǔn)版)
- 餐飲食品安全管理與操作手冊(cè)
- 城市道路施工質(zhì)量驗(yàn)收制度
- 成品倉庫管理制度
- 采購檔案管理與保密制度
- 辦公室網(wǎng)絡(luò)安全教育與培訓(xùn)制度
- 養(yǎng)老院老人健康監(jiān)測(cè)人員社會(huì)保險(xiǎn)制度
- 南陽市第六人民醫(yī)院2025年第二批公開招聘專業(yè)技術(shù)人員備考題庫參考答案詳解
- 養(yǎng)老院?jiǎn)T工培訓(xùn)與考核制度
- 第六章 數(shù)據(jù)的分析 期末復(fù)習(xí)訓(xùn)練(含答案)2024-2025學(xué)年度北師大版數(shù)學(xué)八年級(jí)上冊(cè)
- 2025年遼鐵單招考試題目及答案
- 醫(yī)療行業(yè)數(shù)據(jù)安全事件典型案例分析
- 2026年生物醫(yī)藥創(chuàng)新金融項(xiàng)目商業(yè)計(jì)劃書
- 湖南名校聯(lián)考聯(lián)合體2026屆高三年級(jí)1月聯(lián)考化學(xué)試卷+答案
- 井下爆破安全培訓(xùn)課件
- 2026年安全員證考試試題及答案
- 山東省濰坊市2024-2025學(xué)年二年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 空氣源熱泵供熱工程施工方案
- 合伙車輛分車協(xié)議書
- 2026屆濰坊市重點(diǎn)中學(xué)高一化學(xué)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 中國馬克思主義與當(dāng)代2024版教材課后思考題答案
評(píng)論
0/150
提交評(píng)論