apply()
apply(m,,dimcode,f,,fargs)
- m 是一個矩陣,。
- dimcode是維度編號,取1則為對行應(yīng)用函數(shù),,取2則為對列運用函數(shù),。
- f是函數(shù)
- fargs是f的可選參數(shù)集
> z <- matrix(1:6, nrow = 3)
> f <- function(x) {
+ x/c(2, 8)
+ }
> apply(z,1,f) #f函數(shù)得到兩個元素,則為幾行,,豎著來的
[,1] [,2] [,3]
[1,] 0.5 1.000 1.50
[2,] 0.5 0.625 0.75
lapply()
lapply()(代表list apply)與矩陣的apply()函數(shù)的用法類似,, 對列表的每個組件執(zhí)行給定的函數(shù),并返回另一個列表,。
> x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
> lapply(x, mean)
$a
[1] 5.5
$beta
[1] 4.535125
$logic
[1] 0.5
sapply()
sapply()(代表simplified [l]apply)可以將結(jié)果整理以向量,,矩陣,列表 的形式輸出,。
> sapply(x, mean)
a beta logic
5.500000 4.535125 0.500000
> sapply(x, quantile) #每一個對應(yīng)組件輸出5個元素,,所以為5行,像矩陣一樣,,豎著來的,。
a beta logic
0% 1.00 0.04978707 0.0
25% 3.25 0.25160736 0.0
50% 5.50 1.00000000 0.5
75% 7.75 5.05366896 1.0
100% 10.00 20.08553692 1.0
> sapply(2:4, seq)
[[1]]
[1] 1 2
[[2]]
[1] 1 2 3
[[3]]
[1] 1 2 3 4
vapply()
vapply()與sapply()相似,他可以預(yù)先指定的返回值類型。使得得到的結(jié)果更加安全,。
> vapply(x, quantile, c(1,2,5,6,8)) #它需要一個5個長度的向量來告訴他返回的類型,,向量里面的內(nèi)容可以變換
a beta logic
0% 1.00 0.04978707 0.0
25% 3.25 0.25160736 0.0
50% 5.50 1.00000000 0.5
75% 7.75 5.05366896 1.0
100% 10.00 20.08553692 1.0
tapply( )
tapply(x,f,,g)需要向量 x (x不可以是數(shù)據(jù)框),,因子或因子列表 f , 函數(shù) g 。
tapply()執(zhí)行的操作是:按照f對x分組,,在分組后的向量上運行函數(shù) g
> a <- c(24,25,36,37)
> b <- c('q', 'w', 'q','w')
> tapply(a, b, mean)
q w
30 31
mapply()
多參數(shù)版本的sapply(),。第一次計算傳入各組向量的第一個元素到FUN,進行結(jié)算得到結(jié)果,;第二次傳入各組向量的第二個元素,,得到結(jié)果;第三次傳入各組向量的第三個元素…以此類推,。
l1 <- list(a = c(1:10), b = c(11:20))
l2 <- list(c = c(21:30), d = c(31:40))
mapply(sum, l1$a, l1$b, l2$c, l2$d)
## [1] 64 68 72 76 80 84 88 92 96 100
|