分享

R语言利器:apply、lapply和sapply

 微笑如酒 2019-01-11

   大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

   就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

   这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

从极简例子开始,认识几个批处理的函数。

1.apply

处理矩阵或数据框,对每行/列实施相同的操作

usage: apply(X, MARGIN, FUN, …)

其中X是数据框/矩阵名;MARGIN为1表示取行,为2表示取列,fun是函数

(test<->1:4,1:4])
##   Sepal.Length Sepal.Width Petal.Length Petal.Width## 1          5.1         3.5          1.4         0.2## 2          4.9         3.0          1.4         0.2## 3          4.7         3.2          1.3         0.2## 4          4.6         3.1          1.5         0.2
apply(test, 2, mean)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width ##        4.825        3.200        1.400        0.200
apply(test, 1, sum)
##    1    2    3    4 ## 10.2  9.5  9.4  9.4

2.lapply

处理列表,对列表中的每个元素(向量)实施相同的操作

usage:lapply(list, FUN, …)

price <- list(year2016="">36:33,              year2017 = 32:35,              year2018 = 30:27)#返回的是列表,对列表中的每个元素(向量)求均值(试试方差var,分位数quantile)lapply(price,mean)
## $year2016## [1] 34.5## ## $year2017## [1] 33.5## ## $year2018## [1] 28.5
unlist(lapply(price,mean))
## year2016 year2017 year2018 ##     34.5     33.5     28.5

3.sapply

sapply(X, FUN, …) 注意和lapply的联系和区别

也是处理列表,但返回值是向量或矩阵

lapply(price,min)
## $year2016## [1] 33## ## $year2017## [1] 32## ## $year2018## [1] 27
sapply(price,min)
## year2016 year2017 year2018 ##       33       32       27
lapply(price,quantile)
## $year2016##    0%   25%   50%   75%  100% ## 33.00 33.75 34.50 35.25 36.00 ## ## $year2017##    0%   25%   50%   75%  100% ## 32.00 32.75 33.50 34.25 35.00 ## ## $year2018##    0%   25%   50%   75%  100% ## 27.00 27.75 28.50 29.25 30.00
sapply(price,quantile)
##      year2016 year2017 year2018## 0%      33.00    32.00    27.00## 25%     33.75    32.75    27.75## 50%     34.50    33.50    28.50## 75%     35.25    34.25    29.25## 100%    36.00    35.00    30.00

隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多