版权声明:转载请注明出处 https://blog.csdn.net/qq_42292831/article/details/83035159
这里的二维数据可以是矩阵的形式也可以是数据框的形式,
通过apply()函数的正确使用,可以在二位数据的行、列上进行自己想要的操作:
例如:
每一列/每一行的数据之和sum、中位数median、均值mean和方差var等;
****************************************************************************************************************************************
★Apply() 函数:
*首先给出相应的使用代码:
> x1 = c(12,45,78,89,56,23,15,48,75,42)
> x2 = c(23,56,89,48,59,26,15,48,78,99)
> x3 = c(56,78,55,66,44,22,11,33,10,58)
> cbind(x1,x2,x3) #首先组成二维数组
x1 x2 x3
[1,] 12 23 56
[2,] 45 56 78
[3,] 78 89 55
[4,] 89 48 66
[5,] 56 59 44
[6,] 23 26 22
[7,] 15 15 11
[8,] 48 48 33
[9,] 75 78 10
[10,] 42 99 58
> x = cbind(x1,x2,x3) #将二维数组复制给x
> apply(x,2,max)
x1 x2 x3
89 99 78
> apply(x,2,sum)
x1 x2 x3
483 541 433
> apply(x,2,min)
x1 x2 x3
12 15 10
> apply(x,2,mean)
x1 x2 x3
48.3 54.1 43.3
> apply(x,2,median)
x1 x2 x3
46.5 52.0 49.5
> apply(x,2,sd)
x1 x2 x3
26.72514 28.27032 23.44284
> apply(x,2,var)
x1 x2 x3
714.2333 799.2111 549.5667
> apply(x,2,prod)
x1 x2 x3
1.095058e+16 4.692829e+16 3.231463e+15
> apply(x,1,max)
[1] 56 78 89 89 59 26 15 48 78 99
> apply(x,1,min)
[1] 12 45 55 48 44 22 11 33 10 42
> apply(x,1,sum)
[1] 91 179 222 203 159 71 41 129 163 199
★apply()函数分析:
> apply(x,2,max)
其中包含了三个参数,第一个参数是指定相应的二维数组;
第二个参数如果是1就代表在行的方向上进行统计,如果是2就代表在列的方向上进行统计;
第三个参数指出需要对数据进行操作的函数。
★利用which函数对Apply() 函数产生的数据的定位与查询:
> x
x1 x2 x3
[1,] 12 23 56
[2,] 45 56 78
[3,] 78 89 55
[4,] 89 48 66
[5,] 56 59 44
[6,] 23 26 22
[7,] 15 15 11
[8,] 48 48 33
[9,] 75 78 10
[10,] 42 99 58
> apply(x,1,sum)
[1] 91 179 222 203 159 71 41 129 163 199
> which.max(apply(x,1,sum))
[1] 3
> x$x1[which.max(apply(x,1,sum))]
Error in x$x1 : $ operator is invalid for atomic vectors
#这里网上说可以使用,但是这里为什么不能使用呢??没搞懂~
#但是可以直接使用下面的语句也可以达到相应的效果
> x[which.max(apply(x,1,sum))]
[1] 78
> x2[which.max(apply(x,1,sum))]
[1] 89
> x3[which.max(apply(x,1,sum))]
[1] 55
****************************************************************************************************************************************
最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。
****************************************************************************************************************************************