x: 是乙個陣列(array),也就是說輸入必須都是相同型別的資料,要麼都是數值型,要麼都是字元型。如果是乙個混合資料型別的data.frame
,那麼就會嘗試用as.matrix
強制轉換資料
margin:表示對行(1)或者是對列(2)應用函式。
fun: 可是r自帶函式,如mean,sum等。也可以是自己編寫的函式。
...
: 是fun中的額外引數
首先建立乙個2行4列的矩陣。
ma <- matrix(c(1:4, 1, 6:8), nrow = 2)
> ma
[,1] [,2] [,3] [,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
對每一行求平均
[1] 3 5
相當於
mean(ma[1,]) # 3
mean(ma[2,]) # 5
對每一列求平均
[1] 1.5 3.5 3.5 7.5
相當於:
mean(ma[,1]) # 1.5
mean(ma[,2]) # 3.5
...
ps:於是我發現margin的1對應ma[x,y]的x,margin的2對應[x,y]的y.
用法說明中,...
適用於為函式的提供額外引數。具體的說就是如果乙個函式有多個引數,那麼...
就是負責傳入除了乙個個引數以外的其他引數。
比如說mean(x, trim = 0, na.rm = false, ...)
,就有乙個如何處理na值的引數。
# 手動增加na值
> ma[1,1] <- na
> ma
[,1] [,2] [,3] [,4]
[1,] na 3 1 7
[2,] 2 4 6 8
預設情況:
[1] na 5
新增引數na.rm=true
[1] 3.666667 5.000000
下面計算乙個稍微複雜點的例子,按行迴圈,讓矩陣的第1列加1,並計算出第1和第2列的均值,還有對每一行進行求和。
吐槽:我也不知道為什麼要做這些操作,但是是為了演示函式把
ma
[,1] [,2] [,3] [,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
myfunc <- function(x)
[,1] [,2]
[1,] 2 3
[2,] 12 20
[3,] 2 3
如何使用R的apply
x 是乙個陣列 array 也就是說輸入必須都是相同型別的資料,要麼都是數值型,要麼都是字元型。如果是乙個混合資料型別的data.frame,那麼就會嘗試用as.matrix強制轉換資料 margin 表示對行 1 或者是對列 2 應用函式。fun 可是r自帶函式,如mean,sum等。也可以是自己...
R語言 apply函式族
作用目標 在每個元素上應用 在子集合上應用 array listby 在array上,沿margin方向,依次呼叫 fun,返回結果通常為array型別,如果返回值的向量長度不等,則返回list物件。margin表示陣列引用的第幾維下標 即array index1,index2,中的第幾個index...
R語言apply函式簇
示例 x為列表 x list a 1 5,b 6 10,c 11 15 xx a 1 1 2 3 4 5 b 1 6 7 8 9 10 c 1 11 12 13 14 15 a 1 3 b 1 8 c 1 13示例 列表 x list a 1 5,b 6 10,c 11 15 spply函式 a b...