R語言apply()函數用法

來源:互聯網
上載者:User

標籤:r語言   簡單   三維   span   情況   方法   向量   文檔   nbsp   

在R語言的協助文檔裡,apply函數的功能是:

Retruns a vector or array or list of values obtained by applying a function to margins of an array or matrix.

就是說apply把一個function作用到array或者matrix的margins(可以理解為數組的每一行或者每一列)中,傳回值時vector、array、list。

簡單的說,apply函數經常用來計算矩陣中行或列的均值、和值的函數,具體方法如下:

定義一個3×2的矩陣:

rname = c("one","two","three")cname = c("first","second")b <- matrix(1:6,nrow=3, dimnames = list(rname, cname))

b為:

      first secondone       1      4two       2      5three     3      6

繼續舉幾個例子:

apply(b,1,sum)

上面的指令代表對矩陣b進行行計算,分別對每一行進行求和。函數涉及了三個參數:

第一個參數是指要參與計算的矩陣;

第二個參數是指按行計算還是按列計算,1——表示按行計算,2——按列計算;

第三個參數是指具體的運算參數。

上述指令的返回結果為:

  one   two three     5     7     9 

值得注意的是,apply函數時可以針對數組進行計算你的,就是說數組未必是2維的!!

舉一個3維的情況:

首先頂一個三維數組:

x=array(1:24,c(2,3,4))

三維數組為:

, , 1     [,1] [,2] [,3][1,]    1    3    5[2,]    2    4    6, , 2     [,1] [,2] [,3][1,]    7    9   11[2,]    8   10   12, , 3     [,1] [,2] [,3][1,]   13   15   17[2,]   14   16   18, , 4     [,1] [,2] [,3][1,]   19   21   23[2,]   20   22   24

使用如下指令:

apply(x,1,sum)

則對1到23的所有奇數進行求和,結果為:

[1] 144 156

同樣,第二個參數改成2後, 

apply(x,2,sum)

結果為:

[1]  84 100 116

 是按照第二個維度進行的求和計算。

第二個參數改成3後,

apply(x,3,sum)

結果為:

[1]  21  57  93 129

 即對第三個維度進行求和計算。

 

對於apply()函數的第三個參數,制定了具體用什麼函數進行計算,之前例子裡使用的都是sum,對於使用者自訂的函數同樣可以在這裡使用。還用前面的矩陣b來舉例。

定義了一個求平方和的函數:

myfun <- function(x){  sum(x^2)}

如果選擇按行計算平方和,可使用如下指令:

apply(b,1,myfun)

計算結果為:

one   two three    17    29    45 

通常情況大家使用apply之後是需要把apply的傳回值作為輸入在其他代碼中使用的,這裡尤其重要的一點是apply的傳回值的維度。上面的例子就算每一行或者每一列的sum,使用apply之後,返回都是一個向量,並不會因為apply計算行(列)的sum就會自動返回一個列(行)向量。

 

R語言apply()函數用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.