天天看點

《資料科學:R語言實作》——1.3 比對參數

本節書摘來自華章出版社《資料科學:r語言實作》一 書中的第1章,第1.3節,作者:r for data science cookbook 丘祐玮(david chiu),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

在r函數中,參數是激活函數的輸入變量。我們可以給函數傳遞一般參數、命名參數、帶有預設變量的參數,或者不确定數量的參數。在本教程中,我們會展示如何給定義好的函數傳遞各種各樣的參數。

準備工作

確定你已經在作業系統中安裝了r語言,完成了之前的步驟。

實作步驟

執行下列步驟,來建立帶有不同類型參數清單的函數。

1.在r控制台中鍵入下列代碼,來建立帶有預設值的函數:

《資料科學:R語言實作》——1.3 比對參數
《資料科學:R語言實作》——1.3 比對參數

運作原理

建立函數的時候,r語言提供了靈活的參數綁定機制。在本教程中,我們首先建立了名為defaultag的函數,它帶有兩個形參:x和y。這裡,y有一個預設值,給定為5。然後,當我們傳遞3來調用defaultarg函數時,它把3傳遞給x,把5傳遞給了y,并且傳回了13。除了傳遞數值作為輸入外,我們也可以給函數傳遞向量(或者其他任何資料類型)。在本例中,如果我們傳遞向量1:3給defaultarg函數,它就會傳回一個向量。

接下來,我們可以看到參數是如何與函數綁定的。當我們使用不帶參數名的參數來調用函數的時候,函數會通過位置來綁定傳遞的值。以步驟4為例,第一個參數3比對到x,6比對到y,函數傳回15。另一方面,你也可以通過名稱傳遞參數。在步驟5中,我們可以使用任何順序給函數傳遞指定名稱的參數。是以,如果我們給函數defaultarg傳遞y=6和x=3,函數也會傳回15。

另外,我們可以使用參數作為控制語句。在步驟6中,我們指定了3個形參:x,y和type,其中,參數type帶有預設值sum。接着,我們可以為參數type指定取值作為if-else控制流程中的判斷條件。也就是說,當我們把sum傳遞給type時,函數傳回x與y的加和;當我們把mean傳遞給type時,函數傳回x和y平均值;當我們把sum和mean之外的任何取值傳遞給type時,函數傳回x和y乘積。

最後,我們可以使用記号...給函數傳遞不确定數量的參數。在本例的最後一個步驟中,如果我們隻給函數傳遞3和5,函數會先把3傳遞給x,5傳遞給y。然後,函數給x加上2,給y乘以2。最後,求x和y的和。然而,如果我們給函數傳遞兩個以上的參數,函數也會對額外的參數求和。

更多技能

除了給出完整的參數名,我們也可以使用參數的縮寫來調用函數:

《資料科學:R語言實作》——1.3 比對參數

這裡,我們并沒有正确地指定參數名type,函數卻可以把unknown傳遞給參數type,并且傳回輸出15。