99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-10-17 閱讀量: 1419
使用R自定義函數(shù)的學(xué)習(xí)分享整理

函數(shù)的組成部分

1??函數(shù)體:body(),函數(shù)的代碼

2??形式參數(shù)列表:formals(),控制函數(shù)調(diào)用的參數(shù)列表

3??環(huán)境:environment(),函數(shù)的變量所在位置的“地圖”

> f<-function(x) x^2

> f

function(x) x^2

> formals(f)

$x

> body(f)

x^2

> environment(f)

<environment: R_GlobalEnv>

函數(shù)都有上述三個組成部分,有一個例外:原語函數(shù)(如:sum等),它是直接用.Primitive()調(diào)用C語言代碼,并且不包含R語言代碼。因此它們的formals()、body()、environment()都是NULL

四個基本原則:

名字屏蔽、函數(shù)和變量、全新的開始狀態(tài)、動態(tài)查找

(1)名字屏蔽

a)如果一個名字在函數(shù)中沒有定義,那么R語言將向上一個層次查找。

? ?b)如果一個函數(shù)內(nèi)部定義了另一個函數(shù),也適用同樣的規(guī)則: 首先,查看當(dāng)前函數(shù)的內(nèi)部,然后是這個函數(shù)被定義的環(huán)境,然后繼續(xù)向上,以此類推,一直到全局環(huán)境,然后,再查找其它已經(jīng)加載的包

? ?c)同樣的規(guī)則也適用于閉包——由其它函數(shù)創(chuàng)建的函數(shù)

a)

> x<-2

> g<-function(){

y<-1

c(x,y)

}

>

> g()

[1] 2 1



b)

> x<-1

> h<-function(){

y<-2

i<-function(){

z<-3

c(x,y,z)

}

i()

}

>

> h()

[1] 1 2 3



c)

> j<-function(x){

y<-2

function(){

c(x,y)

}


(2)函數(shù)和變量

對于函數(shù),規(guī)則有一點點調(diào)整。 如果很明顯你要的是函數(shù)(例如,f(3)),那么在這樣的語境中,R語言在搜索時,將忽略那些不是函數(shù)的對象。

> l<-function(x) x + 1

> m<-function(){

l<-function(x) x * 2

l(10)

}

> m()

[1] 20

(3)全新的開始狀態(tài)

?函數(shù)每次調(diào)用時,一個新的環(huán)境就會被創(chuàng)建出來,隨后函數(shù)會在該環(huán)境中執(zhí)行。函數(shù)無法報告它上一次被調(diào)用時發(fā)生了什么,因為每次調(diào)用都是完全獨立的。


> j<-function(){

if(!exists("a")){

a<-1

} else {

a<-a + 1

}

print(a)

}

>

> j()

[1] 1

> j()

[1] 1

(4)動態(tài)查找

詞法作用域決定了去哪里查找值,而不是決定在什么時候查找值。 R語言在函數(shù)運行時查找值,而不是在函數(shù)創(chuàng)建時查找值。這意味著,函數(shù)的輸出是可以隨著它所處的環(huán)境外面的對象,而發(fā)生變化的。

79.8666
1
關(guān)注作者
收藏
評論(0)

發(fā)表評論

暫無數(shù)據(jù)
推薦帖子