r函數的使用方法?
一個函數是組合在一起以執行特定任務的一組語句。R具有大量內置函數,當然用戶也可以創建自己的功能。在R中,函數是一個對象,所以R解釋器能夠將控制傳遞給函數,以將參數傳遞函數完成操作。該函數又執行其任務并將控制權返回給解釋器以及可存儲在其他對象中的任何結果。
在R語言中,我們使用關鍵字Function來創建一個函數,來看下R函數定義的基本語法:
function_name <- function(arg_1, arg_2, ...) {
Function body
}
函數中有許多不同的部分,我們來看下:
函數名稱 - 這是函數的實際名稱。 它以R名稱作為對象存儲在R環境中。
參數 - 參數是一個占位符。調用函數時,將值傳遞給參數。參數是可選的; 也就是說,函數可能不包含參數。參數也可以有默認值。
函數體 - 函數體包含一組語句,用于定義函數的作用。
返回值 - 函數的返回值是要評估/計算的函數體中的最后一個表達式。
R具有許多內置函數,可以直接在程序中調用,而不必定義它們。我們還可以創建和使用自己創建的函數,稱為用戶定義函數。這里嘞,我們先來看內置函數。
內置函數的簡單示例有:seq(),mean(),max(),sum(x)和paste(...)等。它們可在用戶編寫的程序直接調用,更多的可以參考廣泛使用的R函數 ,來看示例:
?
輸出結果為:
?
我們再來嘗試在R中創建用戶定義的函數,它們用于實現用戶想要的功能,當創建了這些用戶自定義函數后,就可以像內置函數那樣使用,來看下創建和使用函數的示例:
?
輸出結果為:
?
再來看下沒有參數的函數的實例:
?
輸出結果為:
?
再來嘗試用參數值調用函數(按位置和名稱),函數調用的參數可以按照函數中定義的順序提供,也可以按不同的順序提供,只需要分配給參數的名稱即可,實例如下:
?
輸出結果為:
?
還有就是使用默認參數調用函數。
我們可以在函數定義中定義參數的值,并調用函數,而不提供任何參數來獲取默認結果,也可以通過提供參數的新值來獲取非默認參考值來調用這些函數,來看示例:
?
輸出結果為:
?
最后來看下懶惰計算函數,函數的參數被執行懶評估/求值,這表示它們只有在函數體需要的時候進行評估/求值,實例如下:
?
輸出結果為:
?
如上所示,只有在print(b),才發現沒有提供參數b的值。所以我們在編寫程序時要注意此類問題的發生,最好給定參數b一個默認值。