【R每日一贴】R中lapply和sapply函数?
测试开头
测试结尾
对于一个列表,若想对列表中每个元素应用一个函数,怎么办?可以使用lapply函数和sapply函数,前者返回列表,后者返回向量。这两函数使用方式如下。
lst <- lapply(lst, fun)
vec <- sapply(lst, fun)
举例说明如下。
> scores <- list(s1=c(85, 89, 62), s2=c(100, 60, 88, 96))
> scores
$s1
[1] 85 89 62
$s2
[1] 100 60 88 96
> lst <- lapply(scores, length)
> lst
$s1
[1] 3
$s2
[1] 4
> vec <- sapply(scores, length)
> vec
s1 s2
3 4
> sapply(scores, mean)
s1 s2
78.66667 86.00000
> sapply(scores, sd)
s1 s2
14.57166 18.03700
> sapply(scores, range)
s1 s2
[1,] 62 60
[2,] 89 100
> tests <- lapply(scores, t.test)
> tests
$s1
One Sample t-test
data: X[[1L]]
t = 9.3507, df = 2, p-value = 0.01124
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
42.46865 114.86468
sample estimates:
mean of x
78.66667
$s2
One Sample t-test
data: X[[2L]]
t = 9.536, df = 3, p-value = 0.002446
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
57.29911 114.70089
sample estimates:
mean of x
86
> sapply(tests, function(t) t$conf.int)
s1 s2
[1,] 42.46865 57.29911
[2,] 114.86468 114.70089
说明:如果调用的函数,返回一个结构化对象,例如一个列表,则需要使用lapply函数而不是sapply函数。
【想一想】
1 lapply函数和sapply函数有什么区别?
【做一做】
1查阅lapply函数和sapply函数的R帮助文档和应用示例?
【温馨话语】
学习的敌人是自己的满足,要认真学习一点东西,必须从不自满开始。
我是陆勤,微信号:wangluqing360,你们在R路上的朋友,一起欣赏R路上的风景。PPV课R语言群:342699237,欢迎朋友们加入,共建最好的R社区。
赠人玫瑰,手有余香。若是觉得此文有用,欢迎分享给更多的人,让更多的人受用。
你若安好,便是晴天。若是朋友们有什么想法或建议,欢迎给我留言或者私信于我。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!