第五講語言函數(shù)_第1頁
第五講語言函數(shù)_第2頁
第五講語言函數(shù)_第3頁
第五講語言函數(shù)_第4頁
第五講語言函數(shù)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五講語言函數(shù)第1頁,共30頁,2023年,2月20日,星期一第2頁,共30頁,2023年,2月20日,星期一for(countin1:length(MemInfo$Price)){if(MemInfo$Frequency[count]=="266")case<-1elseif(MemInfo$Frequency[count]=="333")case<-2elsecase<-3switch(case,{MemInfo$Price[count]<-MemInfo$Price[count]*1.1},{MemInfo$Price[count]<-MemInfo$Price[count]*1.15},{MemInfo$Price[count]<-MemInfo$Price[count]*1.12})}例子:將頻率為266,333,400的內(nèi)存的價格分別增加10%,15%,12%第3頁,共30頁,2023年,2月20日,星期一for(countin1:length(MemInfo$Price)){if(MemInfo$Frequency[count]==266)case<-1

elseif(MemInfo$Frequency[count]==333)case<-2elsecase<-4

switch(case,"1"={MemInfo$Price[count]<-MemInfo$Price[count]*1.1},"2"={MemInfo$Price[count]<-MemInfo$Price[count]*1.15},"4"={MemInfo$Price[count]<-MemInfo$Price[count]*1.12})}第4頁,共30頁,2023年,2月20日,星期一函數(shù)作為一種對象模式,函數(shù)和操作符在R語言內(nèi)部以一種特殊的方式保存,這些函數(shù)和操作符可以在R語言中被調(diào)用在使用R語言的過程中我們可以調(diào)用R語言各種包中攜帶的函數(shù),也可以根據(jù)實際需要定義自己的函數(shù)第5頁,共30頁,2023年,2月20日,星期一函數(shù)的定義和調(diào)用格式函數(shù)的定義格式function_name<-function(arg_1,arg_2,…){expression}函數(shù)的調(diào)用格式

function_name(arg_1,arg_2,…)第6頁,共30頁,2023年,2月20日,星期一例子xor<-function(x,y){(x|y)&!(x&y)}第7頁,共30頁,2023年,2月20日,星期一>x<-c(T,T,F,F)>y<-c(T,F,T,F)>xor(x,y)[1]FALSETRUETRUEFALSE異或:相異返回TRUE,相同返回FALSE.第8頁,共30頁,2023年,2月20日,星期一例子:冒泡法排序冒泡法排序算法:從第i個元素開始兩兩進(jìn)行比較,并將較大的數(shù)值往后推移65,97,76,13,27,49,581:[65,76,13,27,49,58,]97第一次掃描后的數(shù)據(jù)2:[65,13,27,49,58,]76,97第二次掃描后的數(shù)據(jù)3:[13,27,49,58,]65,76,97第三次掃描后的數(shù)據(jù)4:[13,27,49,]58,65,76,97第三次掃描后的數(shù)據(jù)第9頁,共30頁,2023年,2月20日,星期一BubbleSort<-function(Datas,bDesc)#定義冒泡法排序函數(shù)bubbleSort(){

if(!is.atomic(Datas)){

stop("'Datas'mustbeatomic'")}i=length(Datas)-1

while(i>0){nLastExchangeIndex=0j=0

for(jin1:i){

if((bDesc&&Datas[j]>Datas[j+1])||(!bDesc&&Datas[j]<Datas[j+1])){TempData=Datas[j]Datas[j]=Datas[j+1]Datas[j+1]=TempDatanLastExchangeIndex=j}}i=nLastExchangeIndex}Datas}B第10頁,共30頁,2023年,2月20日,星期一>x<-rnorm(100,1,1)>y<-BubbleSort(x,TRUE)>plot(x)>plot(y)調(diào)用BubbleSort函數(shù)第11頁,共30頁,2023年,2月20日,星期一練習(xí)5.1編寫一個函數(shù),給出兩個數(shù)之后,直接給出這兩個數(shù)的平方和。第12頁,共30頁,2023年,2月20日,星期一定義二元操作符在R語言中,可以將函數(shù)定義成一個操作符以方便地使用。形式為:

%anything%%%

余數(shù)%*%

矩陣內(nèi)積%/%

整除%in%

交集%o%

數(shù)組外積%x%KroneckerProductsonArrays第13頁,共30頁,2023年,2月20日,星期一"%<->%"<-function(x,y){TempData=Datas[x]Datas[x]<<-Datas[y]Datas[y]<<-TempDataDatas}例子:交換向量中的兩個數(shù)據(jù)Datas=c(65,97,76,13,27,49,58)2%<->%4->datasDatas[1]65137697274958第14頁,共30頁,2023年,2月20日,星期一R語言中個操作符號的優(yōu)先級別1::顯示調(diào)用各包的共同函數(shù)2$@數(shù)據(jù)列表子集操作符號3^求冪操作4-+一元操作符5:序列操作符號%xyz%各種定義操作符號,包括R語言系統(tǒng)固有的定義符號

%x%,%%,%/%,%*%,%o%,%in%等7*/二元操作符,算術(shù)運算符號8+-算術(shù)運輸符號9>>=<<===!=邏輯運輸符號10!邏輯運算符號,取反操作11&&&邏輯運算符號12|||邏輯運算符號13->->>移位操作符14=賦值操作符15<-<<-移位操作符第15頁,共30頁,2023年,2月20日,星期一參數(shù)名和參數(shù)缺省定義調(diào)用函數(shù)時,可以按照參數(shù)表的定義順次給參數(shù)逐一地設(shè)值,也可以通過參數(shù)名直接應(yīng)用。采用參數(shù)名調(diào)用函數(shù)時,參數(shù)名應(yīng)用的順序可以同函數(shù)參數(shù)定義的順序無關(guān)。在定義函數(shù)時可以設(shè)定一些缺省值的參數(shù),當(dāng)調(diào)用函數(shù)時,如果不設(shè)定某個參數(shù),則這個參數(shù)將按缺省值進(jìn)行處理。第16頁,共30頁,2023年,2月20日,星期一函數(shù):fun1<-function(data,data.frame,graph,limmit){expression}調(diào)用函數(shù)的形式:ans<-fun1(d,df,TRUE,20)ans<-fun1(d,df,graph=TRUE,limit=20)ans<-fun1(data=d,limit=20,graph=TRUE,data.frame=df)第17頁,共30頁,2023年,2月20日,星期一冒泡排序法:BubbleSort<-function(Datas,bDesc=TRUE)調(diào)用:啊ns<-BubbleSort(Datas)#按降序處理第18頁,共30頁,2023年,2月20日,星期一函數(shù)和變量的作用范圍函數(shù)中使用的變量可以分為三種類型:參數(shù)變量、局部變量、自由變量。參數(shù)變量即函數(shù)的參數(shù),調(diào)用函數(shù)時將參數(shù)的數(shù)值傳遞給參數(shù)變量。局部變量是指函數(shù)內(nèi)部聲明的變量,退出函數(shù)時這些局部變量將被清除。參數(shù)變量和局部變量以外的變量都為自由變量。在R語言中自由變量逐級往上尋找相同名字的變量來賦值;如果沒找到則產(chǎn)生新的自由變量。第19頁,共30頁,2023年,2月20日,星期一

f<-function(x){y<-2*x

print(x)#x為參數(shù)變量

print(y)#y為局部變量

print(z)#z為自由變量}例子:第20頁,共30頁,2023年,2月20日,星期一cube<-function(n){sq<-function()n*nn*sq()}例子:第21頁,共30頁,2023年,2月20日,星期一調(diào)試R語言不具有單步跟蹤、設(shè)置斷點、觀察表達(dá)式等調(diào)試功能可以用print(),cat()函數(shù)實時顯示需要調(diào)試的信息可以用browser()函數(shù)暫停程序,并進(jìn)入單步執(zhí)行狀態(tài)第22頁,共30頁,2023年,2月20日,星期一larger<-function(x,y){

cat("x=",x,"\n")

cat("y=",y,"\n")y.is.bigger<-(y>x)

cat("y.is.bigger=",y.is.bigger,"\n")x[y.is.bigger]<-y[y.is.bigger]x}例子:調(diào)試larger()函數(shù),顯示兩個自變量及中間變量的值第23頁,共30頁,2023年,2月20日,星期一>x<-1:4>y<-4:1>larger(x,y)x=1234y=4321y.is.bigger=TRUETRUEFALSEFALSE[1]4334第24頁,共30頁,2023年,2月20日,星期一max.Info<-function(X,a,b,max.start=-10000){

for(jina:b){

if(X[j]<=max.start){max.start=X[j]max.count=j}}

c(max.start,max.count)}例子:尋找向量X在某段范圍(a,b)內(nèi)的最大值和對應(yīng)的下標(biāo)第25頁,共30頁,2023年,2月20日,星期一min.Info<-function(X,a,b,min.start=10000){

for(jina:b){

if(X[j]<=min.start){min.start=X[j]min.count=j}}

c(min.start,min.count)}例子:尋找向量X在某段范圍(a,b)內(nèi)的最小值和對應(yīng)的下標(biāo)第26頁,共30頁,2023年,2月20日,星期一例子:小鼠下丘聽覺誘發(fā)電位在麻醉過程中的變化情況要求:提取每個記錄時段對應(yīng)AEP波形的N0、P1、N1波對應(yīng)的極值和時間117第27頁,共30頁,2023年,2月20日,星期一read.table("D:/work/averageAEP.csv",header=TRUE,sep=",")->averageAEPfirst.max<--10000,first.max.count<-0,second.max<--10000,second.max.count<-0,first.min<-0,first.min.count<-0for(iin1:17)

{result<-max.Info(averageAEP[,i],60,180)#thefirstmaxmumfirst.max[i]<-result[1]first.max.count[i]<-result[2]result<-max.Info(averageAEP[,i],200,600)#thesecondmaxmumsecond.max[i]<-result[1]second.max.count[i]<-result[2]result<-min.Info(averageAEP[,i],150,400)#thefirstminmumfirst.min[i]<-result[1]first.min.count[i]<-result[2]

browser()

#跟蹤信息

}latency.P1<-first.min.count/12.2#p1latencylatency.P1.N0<-(first.min.count-first.max.count)/12.2#n0-P1latencylatency.N1

溫馨提示

  • 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

提交評論