【w3】apply

> str(apply)
function (X, MARGIN, FUN, ...)

MARGIN: 整数向量,指定哪个维度应该被保留

> x <- matrix(rnorm(200), 20, 10)  // 随机200个数,行20,列10
> apply(x, 2, mean)   // 保留第二个(也就是列)取平均值,也就是对每列求平均值
 [1] 0.04868268 0.35743615 -0.09104379
 [4] -0.05381370 -0.16552070 -0.18192493
 [7] 0.10285727 0.36519270 0.14898850
[10] 0.26767260
> apply(x, 1, sum)    // 保留第一个,也就是对每行求和
 [1] -1.94843314 2.60601195 1.51772391
 [4] -2.80386816 3.73728682 -1.69371360
 [7] 0.02359932 3.91874808 -2.39902859
[10] 0.48685925 -1.77576824 -3.34016277
[13] 4.04101009 0.46515429 1.83687755
[16] 4.36744690 2.21993789 2.60983764
[19] -1.48607630 3.58709251

对于行列的求和求平均,推荐使用专门函数,比apply更快

  • rowSums = apply(x, 1, sum)
  • rowMeans = apply(x, 1, mean)
  • colSums = apply(x, 2, sum)
  • colMeans = apply(x, 2, mean)

求20*10矩阵的25%、75%百分位数

> x <- matrix(rnorm(200), 20, 10)
> apply(x, 1, quantile, probs = c(0.25, 0.75))  // 取每行的 25%、75%百分位数
 [,1] [,2] [,3] [,4]
25% -0.3304284 -0.99812467 -0.9186279 -0.49711686
75% 0.9258157 0.07065724 0.3050407 -0.06585436
 [,5] [,6] [,7] [,8]
25% -0.05999553 -0.6588380 -0.653250 0.01749997
75% 0.52928743 0.3727449 1.255089 0.72318419
 [,9] [,10] [,11] [,12]
25% -1.2467955 -0.8378429 -1.0488430 -0.7054902
75% 0.3352377 0.7297176 0.3113434 0.4581150
 [,13] [,14] [,15] [,16]
25% -0.1895108 -0.5729407 -0.5968578 -0.9517069
75% 0.5326299 0.5064267 0.4933852 0.8868922
 [,17] [,18] [,19] [,20]
> a <- array(rnorm(2 * 2 * 10), c(2, 2, 10))      // 2*2*10的数组
> apply(a, c(1, 2), mean)     //保留行列,对第3维度(10对应的)求平均
 [,1] [,2]
[1,] -0.2353245 -0.03980211
[2,] -0.3339748 0.04364908
> rowMeans(a, dims = 2)
 [,1] [,2]
[1,] -0.2353245 -0.03980211
[2,] -0.3339748 0.04364908
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值