天天看點

《資料科學:R語言實作》——1.4 了解環境

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

除了函數名、函數體和形參,環境也是函數的另一個基本組成部分。 簡單地說,環境是r管理和存儲各種類型變量的地方。除了全局環境外,每一個函數會在建立之初激活自己的環境。在本教程中,我們會展示每一個函數的環境是如何工作的。

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

執行下列步驟來使用環境。

1.你可以使用函數environment來檢視目前的環境:

《資料科學:R語言實作》——1.4 了解環境

2.你也可以使用.globalenv和globalenv來浏覽全局環境:

《資料科學:R語言實作》——1.4 了解環境

3.你可以使用函數identical來比較環境:

《資料科學:R語言實作》——1.4 了解環境

4.而且,你可以按照如下方法建立一個新的環境:

《資料科學:R語言實作》——1.4 了解環境

5.你可以找到不同環境中的變量:

《資料科學:R語言實作》——1.4 了解環境

6.這裡,你可以建立函數addnum,并使用environment得到函數的環境:

《資料科學:R語言實作》——1.4 了解環境

7.你也可以判斷函數的環境是否屬于程式包:

《資料科學:R語言實作》——1.4 了解環境

8.接下來,你可以在函數中列印環境:

《資料科學:R語言實作》——1.4 了解環境

9.而且,你可以比較函數内部和外部的環境:

《資料科學:R語言實作》——1.4 了解環境

我們可以把r環境看作存儲和管理變量的地方。也就是說,隻要我們建立了r的一個函數或者對象,我們就開辟了一個環境。頂層環境預設為是全局環境r_globalenv,我們可以使用函數environment确定目前的環境。然後,我們可以使用.globalenv或者globalenv列印全局環境,并使用函數identical進行比較。

除了全局環境,我們也可以建立自己的環境,并把變量配置設定到新的環境。在本例中,我們建立了環境myenv,并使用環境名加美元符号的方法,把x <- 3配置設定到myenv。這樣,我們就可以使用函數ls來列出myenv和全局環境中所有的變量了。我們可以在myenv中找到x,但是在全局環境中隻找到了myenv。

接下來,我們要确定一個函數的環境。建立名為addnum的函數之後,我們可以使用environment來擷取它的環境。由于我們是在全局環境下建立的,函數顯然是屬于全局環境的。另外,當我們擷取函數lm的環境時,卻得到了相關的程式包。這意味着,函數lm位于程式包stat的命名空間中。

我們還可以在函數内部列印出目前的環境。 通過調用函數addnum2,我們可以确定,函數environment輸出的環境名與全局環境不同。也就是說,在我們建立函數的同時,我們也建立了一個新的環境,以及指向父環境的指針。為了檢視這一特點,我們建立了另一個函數addnum3,其帶有嵌套func1。我們可以列印出func1和addnum3的内部環境,而且二者的環境有可能是完全不同的。

為了擷取父環境,我們可以使用函數parent.env。在下面的例子中,我們可以看到parentenv的父環境是r_globalenv:

《資料科學:R語言實作》——1.4 了解環境