第四講R語言 語句組,循環(huán),條件控制.ppt_第1頁
第四講R語言 語句組,循環(huán),條件控制.ppt_第2頁
第四講R語言 語句組,循環(huán),條件控制.ppt_第3頁
第四講R語言 語句組,循環(huán),條件控制.ppt_第4頁
第四講R語言 語句組,循環(huán),條件控制.ppt_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第四講:語句組,循環(huán),條件控制,事件處理的邏輯模式,順序執(zhí)行 按條件作出是否執(zhí)行的判斷 根據(jù)某種條件變化反復(fù)執(zhí)行 根據(jù)不同的情況作出相應(yīng)的執(zhí)行,一、組合表達(dá)式,為實(shí)現(xiàn)某一功能而使各種命令表達(dá)式組合在一起形成一個復(fù)合表達(dá)式,形式一般為: expr_1 expr_2 expr_n ,二、條件控制語句,if (condition1) statement1 else if (condition2) statement2 else statement3,condition語句返回一邏輯值,為TRUE時執(zhí)行,為FALSE時跳過,邏輯運(yùn)算符: & #邏輯與 | #邏輯或 優(yōu)先對向量的第一個元素進(jìn)行運(yùn)算 &

2、#邏輯與 | #邏輯或 ! #邏輯非 按照逐個元素的方式進(jìn)行計算 = #恒等 #大于 = #大于等于 #小于 = #小于等于,x=10) x=,x,n) else if (x=7) x=,x,n) else x=,x,n) ,例子:,x=10) x=,x,n) else if (x=7) x=,x,n) else x=,x,n) ,X-1:9 #x-paste(c(X,Y),1:10,sep=) If (!is.numeric(x) & !plex(x) & !is.logical(x) warning(argument is not numeric or logical: returning

3、 NA) return(NA_real_) ,例子:,例子:分析outer函數(shù)的計算過程, X Y X ,1 ,2 1, 1 3 2, 2 4 Y ,1 ,2 1, 1 4 2, 2 5 3, 3 6, outer(Y,X) #Y%o%X , , 1, 1 ,1 ,2 1, 1 4 2, 2 5 3, 3 6 , , 2, 1 ,1 ,2 1, 2 8 2, 4 10 3, 6 12, , 1, 2 ,1 ,2 1, 3 12 2, 6 15 3, 9 18 , , 2, 2 ,1 ,2 1, 4 16 2, 8 20 3, 12 24,兩個數(shù)組的外積, outer(Y,X,FUN=+) ,

4、, 1, 1 ,1 ,2 1, 2 5 2, 3 6 3, 4 7 , , 2, 1 ,1 ,2 1, 3 6 2, 4 7 3, 5 8, , 1, 2 ,1 ,2 1, 4 7 2, 5 8 3, 6 9 , , 2, 2 ,1 ,2 1, 5 8 2, 6 9 3, 7 10, X ,1 ,2 1, 1 3 2, 2 4 Y ,1 ,2 1, 1 4 2, 2 5 3, 3 6,可以改變計算函數(shù)FUN:+,-,*,/,outer(X,Y,FUN=“*”):提取兩個矩陣的屬性,outer(X,Y,FUN=“*”):兩個矩陣的外積計算過程, Vender ProduceName Type T

5、ype6 Mem Frequency Price MemInfo MemInfo Vender ProduceName Type Mem Frequency Price 1 Vender1 256MB DDR 400 DDR 256 400 315 2 Vender2 256MB DDR 333 DDR 256 333 300 3 Vender3 512MB DDR 400 DDR 512 400 650 4 Vender4 256MB DDR 400 DDR 256 400 280 5 Vender5 256MB DDR 333 DDR 256 333 265 6 Vender6 256MB

6、 SDRAM 266 SDRAM 256 266 265 7 Vender7 256MB DDR 400 DDR 256 400 290 8 Vender8 256MB DDR 400 DDR 256 400 345 9 Vender9 512MB DDR 400 DDR 512 400 575,定義一個數(shù)據(jù)框, rep(expensive,length(MemInfo$Price)-ExpStr rep(cheap,length(MemInfo$Price)-CheapStr ifelse(MemInfo$Price300,ExpStr,CheapStr)-PriceDescription

7、PriceDescription 1 expensive cheap expensive cheap cheap“ cheap 7 cheap expensive expensive,Ifelse (condiction,a,b) #這個表達(dá)式返回一個向量,其長度為a,b中的最大長度.當(dāng)conditioni為真時返回ai,否則返回bi.,例子:根據(jù)內(nèi)存的基本數(shù)據(jù),我們定義價格大于300的內(nèi)存的價格為expensive,否則為cheap,練習(xí)4.1,自行設(shè)計一個條件控制例子,條件中包含邏輯運(yùn)算符號&,|和!,三、循環(huán),for循環(huán) for (name in statement) expr #其中n

8、ame為循環(huán);statement一般為一向量;expr一般為組合表達(dá)式, for (n in c(2,5,10,20,50) + + x-rnorm(n) + cat(n,:,sum(x2),n) + 2 : 0.4124139 5 : 5.202875 10 : 13.96513 20 : 20.07696 50 : 58.16209,例子,例子:定義一個長度為100、mean=1,sd=1的正態(tài)分布隨機(jī)向量,并找出該向量的最小值及其出現(xiàn)的位置,norm-rnorm(100,1,1) #隨機(jī)向量 min.norm-100 #設(shè)定初始最大值 for (i in 1:100) if (normi

9、=min.norm) min.norm=normi min.count=i ,#第i個值與現(xiàn)有最大值做比較,如果比最大值大則更新最大值,并記錄位置,否則不做處理,練習(xí)4.2,找出以上向量的最大值及其出現(xiàn)的位置。 找處100次產(chǎn)生的隨機(jī)向量的最小值于出現(xiàn)位置的關(guān)系。(用plot(min.count,min.norm)表示,其中min.count為位置向量,min.norm為最小值向量),norm=max.norm) max.norm=normi max.count=i ,for (j in 1:100) min.n-0 norm-rnorm(100,1,1) min.normj-100 for

10、(i in 1:100) if (normi=min.normj) min.normj=normi min.countj=i plot(min.count,min.norm),其他循環(huán)形式,repeat循環(huán) repeat expr #組合表達(dá)式 break #達(dá)到結(jié)束循環(huán)的條件,跳處循環(huán) ,while循環(huán) while (condition) expr ,#while循環(huán)中首先執(zhí)行condition語句,當(dāng)condition語句的執(zhí)行結(jié)果為TRUE時,執(zhí)行expr,否則結(jié)束循環(huán), count repeat + + if(MemInfo$Memcount=256) + MemInfo$Pricec

11、ountlength(MemInfo$Price) + break + MemInfo Vender ProduceName Type Mem Frequency Price 1 Vender1 256MB DDR 400 DDR 256 400 346.5 2 Vender2 256MB DDR 333 DDR 256 333 330.0 3 Vender3 512MB DDR 400 DDR 512 400 650.0 4 Vender4 256MB DDR 400 DDR 256 400 308.0 5 Vender5 256MB DDR 333 DDR 256 333 291.5 6

12、Vender6 256MB SDRAM 266 SDRAM 256 266 291.5 7 Vender7 256MB DDR 400 DDR 256 400 319.0 8 Vender8 256MB DDR 400 DDR 256 400 379.5 9 Vender9 512MB DDR 400 DDR 512 400 575.0,例子:將容量為256M的內(nèi)存的價格普調(diào)增長10%,四、分支控制語句,switch(statement,list) #switch語句根據(jù)判定條件的不同而執(zhí)行不同的分支語句。首先執(zhí)行statement,其返回值范圍為1到list的長度。Switch語句執(zhí)行l(wèi)is

13、t中包含的語句,并將結(jié)果返回。,for (count in 1:length(MemInfo$Price) if (MemInfo$Frequencycount=266) case-1 else if(MemInfo$Frequencycount=333) case-2 else case-3 switch(case, MemInfo$Pricecount-MemInfo$Pricecount*1.1 , MemInfo$Pricecount-MemInfo$Pricecount*1.15 , MemInfo$Pricecount-MemInfo$Pricecount*1.12 ) ,例子:將頻率為266,333,400的內(nèi)存的價格分別增加10%,15%,12%,countlength(MemInfo$Price) break ,switch語句中的statement部分可以直接返回字符型矢量,并根據(jù)返回結(jié)果做相應(yīng)處理。,練習(xí)4.3,從小寫字母表的前5個中隨機(jī)抽取一個字母,并按抽取字母的不同做以下操作: a:用apply函數(shù)按列來求出datasets包中數(shù)據(jù)命名為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論