環境列表 R學習 環境和函式

2021-10-14 18:48:08 字數 4134 閱讀 9023

r語言學習貼往期回顧

r學習:r for data science(一)

r學習:r for data science(二)

r學習:r for data science(三)

r學習:r for data science(四)

r學習:r for data science(五)

r學習:資料框的基本操作

今天我們了解一下環境和函式

環境的建立是使用 new.env 函式:

an_environment
向環境中分配變數的方式與列表完全相同。可以使用雙方括號或美元符號運算子。和列表一樣, 環境變數的型別和大小可以不同

assign 函式可以指定變數的儲存位置

檢索變數的方式也是如此:可以使用列表的索引語法,或 assign 的對立函式 get:

an_environment[["pythag"]]

## [1] 12 15 20 21

an_environment$root

## [1] 2+0i 3-0i

get("moonday", an_environment)

## [1] "星期日"

可以把環境引數傳入 ls 和 ls.str 函式中, 列出它的所有內容

ls(envir = an_environment)

## [1] "moonday" "pythag" "root"

ls.str(envir = an_environment)

## moonday: chr "sunday"

## pythag: num [1:4] 12 15 20 21

## root: cplx [1:2] 2+0i 3-0i

可用 exists 函式測試變數是否在環境中:

exists("pythag", an_environment)

## [1] true

使用 as.list 和 as. environment 函式能分別實現從環境到列表或相反過程的轉換。在後一種情況中, 還可以使用 list2env 函式, 它在建立環境時更為靈活:

# 轉換為列表

(a_list

## $pythag

## [1] 12 15 20 21

#### $moonday

## [1] "sunday"

#### $root

## [1] 2+0i 3-0i

# 再轉換回來。以下兩行**的效果一樣。

as.environment(a_list)

## list2env(a_list)

##

大多數的變數型別僅用於儲存資料, 而函式能夠讓我們和資料一起工作, 它們是「動詞」而非「名詞」。和環境類似, 它們只是另一種資料型別, 我們可以分配、 操縱, 甚至將它傳遞給其他函式的資料型別。

鍵入乙個函式的名稱,將顯示其執行的**。以下是 rt 函式, 該函式將生成基於 t 分布的隨機數

rt

## function (n, df, ncp)

## ## ##

rt 需要三個輸入引數:n 是要產生的隨機數的數目, df 是自由度值, ncp 是乙個可選的非中心引數。從技術上來說, 三個引數 n、 df 和 ncp 是 rt 函式的形式引數(formal argument)。當你呼叫該函式並給它傳遞值時, 這些值被稱為引數。

在大括號之間, 你可以看到函式體內**行。它們就是每次呼叫 rt 時要執行的**

在 r 中, 函式中計算的最後乙個值將自動返回。以 rt 為例, 如果 ncp 引數被省略,將會呼叫c **生成隨機數並返回。否則,該函式會呼叫 rnorm、 rchisq 和 sqrt 函式計算並返回值。

要建立我們自己的函式,只需像其他任何變數一樣為它賦值。舉乙個例子, 建立乙個函式來計算直角三角形斜邊的長度

hypotenuse 

這裡, hypotenuse 是我們正在建立的函式, x 和 y 是它的引數(形參), 在大括號中的內容是函式體

現在, 可以使用以下任意一種方式來呼叫這個函式:

hypotenuse(3, 4)

## [1] 5

hypotenuse(y = 24, x = 7)

## [1] 25

當我們呼叫函式時, 如果不命名引數, 則 r 將按位置匹配它們。以 hypotenuse(3, 4) 為例:3 是第乙個引數, 因此它對應 x;4 是第二個引數, 因此它對應 y。

在以下新版本的**中, 如果我們不給函式傳遞任何值, 則 x 會取預設值 5, 而 y 會取 12:

hypotenuse 

hhypotenuse() # 與 hypotenuse(5, 12) 相等

向其他函式傳遞和接收函式

函式可以像其他變數型別一樣地使用,我們可將之作為其他函式的引數, 並且從函式中返回。乙個常見的, 把其他函式當成引數的例子是 do.call。此函式提供了一種呼叫其他函式的替代語法,讓我們可以像列表一樣傳遞引數, 而不是逐次傳遞:

do.call(hypotenuse, list(x = 3, y = 4)) 

# 和 hypotenuse(3, 4) 一樣

## [1] 5

常見的案例為 do.call 與 rbind 混用。你可以結合這兩個函式, 你可以一次拼接多個資料框或矩陣:

dfr1 

dfr2

dfr3

do.call(rbind, list(dfr1, dfr2, dfr3)) # 和 rbind(dfr1, dfr2, dfr3) 一樣

我們還可以以匿名方式傳遞函式 :

x_plus_y 

do.call(x_plus_y, list(1:5, 5:1))

## [1] 6 6 6 6 6

# 與下相同

do.call(function(x, y) x + y, list(1:5, 5:1))

## [1] 6 6 6 6 6

小結• 環境能儲存變數, 它能夠被 new.env 函式建立。

• 通常, 你可以把環境看作列表。

• 函式由形參和函式體組成。

• 你可以分配和使用函式, 像對任何其他的變數型別一樣。

單基因泛癌分析鏈結

tcga單基因免疫相關泛癌分析,懶人福音, 重磅來襲​mp.weixin.qq.com

tcga資料分析課程:生物資訊學教學

R語言學習筆記 小試R環境

買了三本r語言的書,同時使用來學習r語言,粗略翻下來感覺第一本最好 r語言程式設計藝術 the art of r programming r語言初學者使用 a beginner s guide to r r語言實戰 r in action 一句話簡介r語言 r是一種用於資料處理和統計分析的指令碼語言...

R語言學習筆記 小試R環境

買了三本r語言的書,同時使用來學習r語言,粗略翻下來感覺第一本最好 r語言程式設計藝術 the art of r programming r語言初學者使用 a beginner s guide to r r語言實戰 r in action 一句話簡介r語言 r是一種用於資料處理和統計分析的指令碼語言...

R語言執行環境

第乙個例子 代表輸出內容 xx 1 1 2 3 4 5 輔助工具外掛程式的安裝 rcmdr包 實現r的選單化操作。步驟如下 在r命令列中輸入 install.packages rcmdr 回車,接著讓其自動執行,中途選擇乙個映象 等待執行完畢即配置好了,接下來啟動rcmdr。啟動 library r...