1. 程式人生 > >4-1 R語言函式 lapply

4-1 R語言函式 lapply

#lapply函式
#可以迴圈處理列表中的每一個元素
#lapply(引數):lapply(列表,函式/函式名,其他引數)
#總是返回一個列表

#sapply:簡化結果
#結果列表元素長度均為1,返回向量
#結果列表元素長度相同且大於1,返回矩陣

> str(lapply)
function (X, FUN, ...)  

> ?str

> x <- list(a=1:10,b=c(11,21,31,41,51))
> x
$`a`
 [1]  1  2  3  4  5  6  7  8  9 10

$b
[1] 11 21 31 41 51

> lapply(x,mean)
$`a`
[1] 5.5

$b
[1] 31

> x <- 1:4
> lapply(x,runif)
[[1]]
[1] 0.5754994

[[2]]
[1] 0.3157821 0.7646459

[[3]]
[1] 0.2289793 0.1715219 0.6473963

[[4]]
[1] 0.634688171 0.326673566 0.007179751 0.687418686

> lapply(x,runif,min=0,max=100)
[[1]]
[1] 40.30112

[[2]]
[1] 31.06171 64.75319

[[3]]
[1] 45.190536  8.243788 98.328863

[[4]]
[1] 22.22585 18.63806 57.53813 54.82982

> x <- list(a=matrix(1:6,2,3),b=matrix(4:7,2,2))
> lapply(x,function(m) m[1,])
$`a`
[1] 1 3 5

$b
[1] 4 6

> x <- list(a=1:10,b=c(11,21,31,41,51))
> lapply(x,mean)
$`a`
[1] 5.5

$b
[1] 31


> sapply(x,mean)
   a    b 
 5.5 31.0 

> class(sapply(x, mean))
[1] "numeric"