R語言中無參,有參及帶默認值參數函數的定義方法

R語言中大量的包提供了豐富的函數可以幫助我們解決數據處理中的各種問題。但是有時,我們還需要根據自己的需求來編寫自己的函數。

R語言中無參,有參及帶默認值參數函數的定義方法

自定義函數概述

在R語言中,定義一個函數語法格式為:

functionname

expr

return (value)

其中,functionname為函數名稱;arglist為參數列表,若函數不需要參數可以省略;expr是函數要實現的功能代碼;value是函數的返回值,若無返回值,就不寫return部分。

下面舉幾個例子來說明一下具體用法。

無參函數

print_someinfo

{

print("Welcome to 頭條號 : 優美的代碼")

}

將該函數保存到文件後,可以在R編輯器中,選中所有代碼後,點擊工具欄上的“運行當前行或所選代碼”後,並在R控制檯中輸入:print_someinfo(),回車後,就可以看到運行的結果,如下圖所示:

R語言中無參,有參及帶默認值參數函數的定義方法

無參數函數

雖然這個函數沒有參數,但在使用時,括號是不可以能省略的,即應輸入:print_someinfo()。

帶參數的函數

在大多數情況下,函數會根據用戶傳遞的參數執行一定的功能,如求樣本的均值,方差,全距等。這裡以求出一個向量中的最大值為例來說明有參函數的定義方法,編寫的程序代碼如下圖所示:

R語言中無參,有參及帶默認值參數函數的定義方法

求向量中最大的元素

上圖中的最後兩行是使用該函數的一個例子,結果如下圖所示:

R語言中無參,有參及帶默認值參數函數的定義方法

執行結果

這裡給出的算法並不完美,它只適用於2個或2個以上元素的情況,當為一個元素時會報錯:

R語言中無參,有參及帶默認值參數函數的定義方法

參數不合理會報錯

原因是循環是從第2個元素開始,但參數中的向量卻只有一個元素。讀者可以對這個函數進行改造,讓其也適用於只有一個元素的情況。

帶默認值參數的函數

我們可以給函數中的參數一個默認值,當調用該函數時,若沒有給該參數相應的值,函數就使用其提供的默認值來處理。下圖所示的是求三數中的最大者。程序如下圖所示:

R語言中無參,有參及帶默認值參數函數的定義方法

求三個數的最大值

調用時,若n2不給具體的值,則其會使用默認值0來處理。下面幾種格式都是合法的。

maxnum(1,2,3)

maxnum(1,n3=3)

maxnum(n1 = 1, n2 = 2, n3 = 4)

結果如下圖所示:

R語言中無參,有參及帶默認值參數函數的定義方法

默認值的參數執行情況

這個函數中參數n3必須使用參數名來調用,否則,會發生n3沒有賦值的錯誤,如下圖所示:

R語言中無參,有參及帶默認值參數函數的定義方法

參數使用不合理時的錯誤

因為R按照給出的參數列表從左到右依次給每個參數賦值,如不用參數名,45會給了參數n2,造成沒有默認值的參數n3沒有賦值的錯誤。下圖所示的做法會更加合理些:即將帶默認值的參數都放在最後。

R語言中無參,有參及帶默認值參數函數的定義方法

默認值的參數放在後面

希望你能喜歡本篇文章,也希望你能關注本號,本號將持續更新R語言方面的文章,內容由基本語法的使用到具體的數據分析應用。


分享到:


相關文章: