昂Cora语言学习笔记(4):apply,sapply,lapply,tapply,vapply的用法

vapply()

vapply()与sapply()相似,他可以预先钦命的回来值类型。使得获得的结果更是安全。

> vapply(x, quantile, c(1,2,5,6,8))   #它需要一个5个长度的向量来告诉他返回的类型,向量里面的内容可以变换
         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

lapply()

lapply()(代表list apply)与矩阵的apply()函数的用法类似,
对列表的种种组件试行给定的函数,并赶回另三个列表。

> x <- list(a = 1:10, beta = exp, logic = c(TRUE,FALSE,FALSE,TRUE))> lapply$a[1] 5.5$beta[1] 4.535125$logic[1] 0.5

sapply()

sapply()(代表simplified [l]apply)能够将结果整理以向量,矩阵,列表
的款式出口。

> sapply(x, mean)
       a     beta    logic 
5.500000 4.535125 0.500000 
> sapply(x, quantile)   #每一个对应组件输出5个元素,所以为5行,像矩阵一样,竖着来的。
         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
> sapply(2:4, seq)
[[1]]
[1] 1 2

[[2]]
[1] 1 2 3

[[3]]
[1] 1 2 3 4

apply()

apply(m,dimcode,f,fargs)

  • m 是二个矩阵。
  • dimcode是维度编号,取1则为对行使用函数,取二则为对列运用函数。
  • f是函数
  • fargs是f的可选参数集

> z <- matrix(1:6, nrow = 3)> f <- function {+         x/c+ }> apply  #f函数得到两个元素,则为几行,竖着来的      [,1]  [,2] [,3][1,]  0.5 1.000 1.50[2,]  0.5 0.625 0.75

apply()

apply(m,dimcode,f,fargs)

  • m 是七个矩阵。
  • dimcode是维度编号,取一则为对行使用函数,取2则为对列运用函数。
  • f是函数
  • fargs是f的可选参数集

> z <- matrix(1:6, nrow = 3)
> f <- function(x) {
+         x/c(2, 8)
+ }
> apply(z,1,f)  #f函数得到两个元素,则为几行,竖着来的
      [,1]  [,2] [,3]
[1,]  0.5 1.000 1.50
[2,]  0.5 0.625 0.75

mapply()

多参数版本的sapply()。第二遍总结传入各组向量的率先个要素到FUN,举行付钱获得结果;第贰次传入各组向量的第贰个因素,获得结果;第二回传入各组向量的第一个要素…就那样推算。

l1 <- list(a = c, b = cl2 <- list(c = c, d = cmapply(sum, l1$a, l1$b, l2$c, l2$d)## [1] 64 68 72 76 80 84 88 92 96 100

lapply()

lapply()(代表list apply)与矩阵的apply()函数的用法类似,
对列表的每一种组件施行给定的函数,并赶回另2个列表。

> x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
> lapply(x, mean)
$a
[1] 5.5

$beta
[1] 4.535125

$logic
[1] 0.5

vapply()

vapply()与sapply()相似,他能够预先钦定的归来值类型。使得得到的结果更是安全。

> vapply(x, quantile, c(1,2,5,6,8))   #它需要一个5个长度的向量来告诉他返回的类型,向量里面的内容可以变换         a        beta logic0%    1.00  0.04978707   0.025%   3.25  0.25160736   0.050%   5.50  1.00000000   0.575%   7.75  5.05366896   1.0100% 10.00 20.08553692   1.0

tapply( )

tapply(x,f,g)须要向量 x (x不得以是数据框),因子或因子列表 f 以及函数
g 。
tapply()推行的操作是:一时将x分组,每组对应一个因子水平,获得x的子向量,然后这几个子向量应用函数
g

> a <- c(24,25,36,37)
> b <- c('q', 'w', 'q','w')
> tapply(a, b, mean)
 q  w 
30 31 

tapply

tapply供给向量 x ,因子或因子列表 f 以及函数 g 。
tapply()推行的操作是:一时半刻将x分组,每组对应3个因子水平,获得x的子向量,然后那个子向量应用函数
g

> a <- c(24,25,36,37)> b <- c('q', 'w', 'q','w')> tapply(a, b, mean) q  w 30 31 

sapply()

sapply()(代表simplified [l]apply)能够将结果整理以向量,矩阵,列表
的款型出口。

> sapply       a     beta    logic 5.500000 4.535125 0.500000 > sapply(x, quantile)   #每一个对应组件输出5个元素,所以为5行,像矩阵一样,竖着来的。         a        beta logic0%    1.00  0.04978707   0.025%   3.25  0.25160736   0.050%   5.50  1.00000000   0.575%   7.75  5.05366896   1.0100% 10.00 20.08553692   1.0> sapply[[1]][1] 1 2[[2]][1] 1 2 3[[3]][1] 1 2 3 4

相关文章