apply函数族是R语言中极具特色的一个函数族群,包括apply、tapply、sweep、aggregate
先看apply,apply的中文意思是应用,这个函数的意思是通过将一个函数应用到矩阵或数组中,返回一个向量或数组。
函数形式:apply(x,MARGIN,FUN)
1、lapply应用
参考至:[程序问答] 关于lapply族函数。
坛友呵呵哼哼哈哈:
向大家请教下,关于lapply此类函数,输入参数只能是不带参数的嘛,能否输入像gsub等同时指定几个参数的函数吗?求高人指点,谢谢~~
ryoeng 坛友:
- L <- as.list(sample(LETTERS,replace=T))
- lapply(L, function(x) gsub('A','a',x))
- sapply(L, function(x) gsub('A','a',x))
2、函数拓展
MARGIN对于不同的数据类型有不同的含义,如矩阵中1表示按行,2表示按列。FUN表示具体的运算方式
- ma <- matrix(c(1:4, 1, 6:8), nrow = 2)
- ma
- apply(ma, 1, mean) #--> a list of length 2 按行取均值
- apply(ma, 1, quantile)# 5 x n matrix with rownames 按行取分位数
- [,1] [,2] [,3] [,4]
- [1,] 1 3 1 7
- [2,] 2 4 6 8
- [1] 3 5
- [,1] [,2]
- 0% 1 2.0
- 25% 1 3.5
- 50% 2 5.0
- 75% 4 6.5
- 100% 7 8.0
- 再看lapply和sapply
- > x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
- > x 列表形式
- $a
- [1] 1 2 3 4 5 6 7 8 9 10
- $beta
- [1] 0.04978707 0.13533528 0.36787944 1.00000000 2.71828183 7.38905610
- [7] 20.08553692
- $logic
- [1] TRUE FALSE FALSE TRUE
- > lapply(x,mean)
- $a
- [1] 5.5
- $beta
- [1] 4.535125
- $logic
- [1] 0.5
- > lapply(x, quantile, probs = 1:3/4) 对列表中每个数据集进行分位数计算
- $a
- 25% 50% 75%
- 3.25 5.50 7.75
- $beta
- 25% 50% 75%
- 0.2516074 1.0000000 5.0536690
- $logic
- 25% 50% 75%
- 0.0 0.5 1.0
- > sapply(x, quantile) 效果一样
- 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
3、参考
参考至john5feng网易博客




雷达卡




的时候,雨也是晴;心雨
的时候,晴也是雨!
京公网安备 11010802022788号







