4-1 R语言函数 lapply

2020-09-16 15:22:47 浏览数 (4)

代码语言:javascript复制
#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"

0 人点赞