R開發 part8 應用R語言中的函式環境空間

2021-10-09 01:37:16 字數 1424 閱讀 5912

學習筆記,僅供參考,有錯必糾

r語言的函式環境空間

在r語言中,變數、物件、函式都存在於環境空間中,而函式又可以有自己的環境空間,我們可以在函式內再定義變數、物件和函式,迴圈往復就形成了我們現在用的r語言環境系統。

封閉環境

封閉環境是對函式空間的乙個靜態定義,在函式定義時指向所在的環境空間。我們在當前的環境空間定義乙個函式f1,並通過environment函式來檢視封閉環境:

y 

f1 environment(f1) #

繫結環境

繫結環境就是把函式的定義和呼叫通過函式變數連起來。

我們新建乙個環境空間e,在e的環境空間中定義乙個函式g,就相當於把乙個函式繫結到g變數,通過找到e環境空間中的g變數,就可以呼叫這個函式:

e 

e$g

#檢視函式g的定義

e$g #function()

#呼叫函式g

e$g() #1

在環境空間e中再定義乙個巢狀函式:

e 

e$f

e$f # function() }

e$f() # function()

e$f()() #1

檢視函式g和f的封閉環境:

environment(e$g) #environment(e$f) #
執行環境

執行環境是函式被呼叫時產生的記憶體環境。執行環境是臨時的,當函式執行完成後,執行環境會被自動銷毀。在執行環境中定義的變數、物件和函式,也是動態建立的,隨著記憶體釋放而銷毀。

定義乙個函式g,在函式g中,有臨時變數a和引數x:

g 

g(10)

#輸出start

are you ok?

[1] 11

#輸出end

g(10)

#輸出start

are you ok?

[1] 11

#輸出end

可以看到,我們兩次執行得到的環境位址是不同的,明函式的執行時環境,是記憶體臨時分配的。

呼叫環境

呼叫環境是指函式是在哪個環境中被呼叫的。匿名函式通常是在定義的封閉環境中被呼叫。

h 

}x r1

r1() #20

x #5

函式環境空間圖示

R語言中的引號

aa this is an example.1 this is an example.bb this is an example.1 this is an example.identical aa,bb 1 true anne s home 1 anne s home anne s home 1 a...

R語言中的陣列

陣列 不同於矩陣和資料框,維度大於2。r中最簡單的陣列 3維。行,列,面 如下兩行 三列 四面的陣列。dim1 c a1 a2 dim2 c b1 b2 b3 dim3 c c1 c2 c3 c4 dat array 1 24,c 2,3,4 dimnames list dim1,dim2,dim3...

理解R語言中的factor

1.2.在r語言中,因子 factor 表示的是乙個編號或者乙個等級,即,乙個點。例如,人的個數可以是1,2,3,4 那麼因子就包括,1,2,3,4 還有描述協變數水平時,會用到高 中 低,也是因子,因為這些都是乙個點。與之區別的向量,是乙個連續性的值,例如,數值中有1,1.1,1.2 可以作為數值...