一、函數構造器
每一個R函數都包括三個部分:函數名,程序主體以及參數集合,在編寫自定義R函數時,需要將三個部分各自儲存在一個R對象中。這里需要使用function函數,形如:
my_function<-function(){}
function函數可以將大括號內的代碼內容構建成一個函數,例如:
roll<-function(){
dice<-sample(1:6,2,replace = T)#可重復抽樣
sum(dice)
}
roll()
函數將返回最后一行的運行輸出結果,如果最后一行不輸出結果,整個函數也將不會有返回值
二、含參函數的構造
可以通過在括號里填入參數名稱加以實現,具體如下:
roll2<-function(bones){
dice<-sample(bones,2,replace = T)#可重復抽樣
sum(dice)
}
> roll2()
Error in sample(bones, 2, replace = T) :
argument "bones" is missing, with no default
> roll2(1:10)
[1] 11
可以發現如果不寫參數,R將報錯,為了防止類似的錯誤發生,可以預先設置一個初始默認值給bones參數,只需在括號里用等號將默認值與參數相連即可。
形如:
roll3<-function(bones=1:6){
dice<-sample(bones,2,replace = T) #可重復抽樣
sum(dice)
}
> roll3()
[1] 9
三、提取函數
就像其他語言的IDE一樣,RStudio也提供了抽取函數的功能,在R腳本中選中對應的代碼段,在菜單欄中選擇Code>Extract Function即可。RStudio會詢問給函數取什么名字,然后用function將所需函數包裝起來,並會自動檢查代碼段中未定義的變量,將其設置為該函數的參數。
提取函數之后,同志們記得檢查一下,主要是看看有沒有什么需要設置默認值的參數,或者函數有沒有返回值之類的問題。
四、查看函數
不僅可以通過help查看函數解釋,還可以通過直接輸入函數名查看函數代碼
這就是開源的好處!