(R語言)編寫自己的函式

2021-06-29 15:38:39 字數 2311 閱讀 9704

10.1 函式的定義

> name <- function(arg_1, arg_2, ...) expression 

expression是乙個r表示式(通常是表示式語句組),並使用引數arg_i來計算出乙個數值,表示式的值就是函式的返回值。

函式呼叫的形式通常都是name(expr1,expr2,...)

10.2 定義新的二元操作符

可以將函式定義為新的二元操作符:

>"%!%" <- function(x, y)

正如矩陣乘法運算子,%*%,和矩陣外積運算子%o%

10.3 指定引數和預設值

如果被呼叫函式的引數按照"name = obj"的形式給出,那麼引數的次序可以是任意的。

而且,引數序列可以在開始依次序給出,而將指定名稱的引數置於後面。

因此,如果由乙個函式fun1被定義為

> fun1 <- function(data, data.frame, graph, limit)

那麼函式可以有多種等價的使用方法,例如

> 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)

預設值 :在很多情況下,引數都會被賦予乙個普遍適用的預設值。

> fun1 <- function(data, data.frame, graph=true, limit=20)

則函式可以這樣被呼叫

> ans <- fun1(d, df)

此時與上面三種情況等價,也可以這樣呼叫

> ans <- fun1(d, df, limit=10)

此時改變了乙個預設值。

note:引數可以是任意表示式,甚至可以是包含其他引數的表示式;

10.4 額外引數「...」

當需要將乙個函式的引數傳遞給另乙個函式時,可以通過包含乙個額外的引數"..."實現。

fun1 <- function(data, data.frame, graph=true, limit=20, ...)

10.5 全域性變數和區域性變數

函式內的賦值都是區域性變數,退出函式就丟失了。

如果要在函式內進行永久賦值(定義全域性變數),需要用到「超賦值」操作符, <<-或者函式assign()。

10.6 一些高階示例

區組設計的效率因子 (e±ciency factors)

刪除列印陣列中的所有名稱

遞迴的數值積分

10.7 範疇(scope)

函式主體內出現的標識(symbol)可以被分為3類;正式引數、區域性變數和自由變數。

正式引數就是出現在函式引數列表中的引數,他們的值由實際的函式引數與正式引數的繫結(binding)過程決定。

區域性變數是在引數主體中,由表示式求值過程決定的變數。

自由變數為既不是正式引數又不是區域性變數的變數。賦值之後自由變數成為區域性變數。

在r中,自由變數的值由函式被建立的環境中與其同名的第乙個變數值決定(我理解為最近的同名變數),這種方式被稱為詞彙式範疇(lexical scope)。

而在s中,該值由同名的全域性變數決定。

例如下面的函式cube,在r中cube(2)=8,在s中報錯為sq()找不到n。

cube <- function(n)

乙個銀行賬戶的例子,詳見《r語言筆記》。

10.8 定製環境

詳見《r語言筆記》。

10.9 類別,通用函式和物件定位

乙個物件的類別(class)決定了他會如何被通用函式(generic function)處理。

如果引數本身沒有任何類別屬性,或者其類別在特定問題中並不滿足通用函式的要求,通常會有乙個預設的動作被執行。

類別機制使使用者可以為特定的目的設計和編寫通用函式。

使用》 methods(class="data.frame")可以檢視資料幀的通用函式。

使用》 methods(plot)可以檢視plot函式能處理的類別。

R語言 函式的編寫

r語言實際上是函式的集合,使用者可以使用base,stats等包中的基本函式,也可以自己編寫函式完成一定的功能。但是初學者往往認為編寫r函式十分困難,或者難以理解。這裡對如何編寫r函式進行簡要的介紹。函式是對一些程式語句的封裝。換句話說,編寫函式,可以減少人們對重複 書寫,從而讓r指令碼程式更為簡潔...

R語言中如何編寫自己的函式初步入門

一 迴圈與控制 迴圈 for i in 1 10 print hello world i 10 while i 0 控制 if if else ifelse 判斷,true,false switch type,二 使用者自定義函式 mystats function x,parametric true...

R語言 編寫自定義函式

r語言實際上是函式的集合,使用者可以使用base,stats等包中的基本函式,也可以編寫自定義函式完成一定的功能 乙個函式的結構大致如下所示 myfunction function arglist 其中,myfunction為函式名稱,arglist為函式中的引數列表,大括號 內的語句為函式體,函式...