4-2R语言函数 apply
apply:沿着数组的某一维度处理数据
例如:将函数用于矩阵的行或列
虽然与for/while循环效率相似,但是只用一句话就可以完成
apply(参数):apply(数组,维度,函数/函数名)
例:1.x<-matrix(1:16,4,4)
apply(x,2,mean)(对x求列的平均)
apply(x,2,sum)
相同于:rowSums(x) rowMeans(x)
colSums(x) colMeans(x)
2.x<-matrix(rnorm(100),10,10)(随机从正态分布的总体里抽取100个数据)
apply(x,1,quantile,probs=c(0.25,0.75))(求25%和75%的百分位点所对应的数据)
3.x<-array(rnorm(2*3*4),c(2,3,4))(三维数据,维度是2,3,4,第3维是4,即有4个2行3列的矩阵)
apply(x,c(1,2),mean)(在第1维和第2维组成的平面上,沿着第4维进行求平均)
apply(x,c(1,3),mean)
apply(x,c(2,3),mean)
#rnorm(100) 随机从正态分布的总体里抽取100个数
x <- matrix(rnorm(100), 10, 10)
#quantile函数求百分位点的值,probs参数设置具体求哪些百分位点
#apply的第2个参数,1表示行,2表示列
apply(x, 1, quantile, probs = c(0.25, 0.75))
rnorm(2*3*4)是什么意思?
apply:apply(数组,维度,函数/函数名)
x <- matrix(1:16,4,4)
apply(x,2,mean) #求x矩阵列的均值
apply(x,1,mean) #求x矩阵行的均值
rowSums(x) #求矩阵x各行的总和
colSums(x) #求矩阵x各列的总和
x<-matrix(rnorm(100),10,10) #rnorm从正态分布总体里随机抽取100数
apply(x,1,quantile,probs=c(0.25,0.75)) #quntile百分位的点
x<-array(rnorm(2*3*4),c(2,3,4))
apply(x,c(1,2),mean) #返回第一维度和第二维度所构成面的均值
colSums(x)
重要函数的使用
求列的平均
rowSums(x)---对行求和
rowMeans(x)---对行求平均
colSums(x)---对列求和
colMeans(x) -----对列求平均
rnorm(100)----随机从正态分布里抽取100个数据
quantile ----- 求数据的百分位点
三维数组,取其中的两维如(1,2)就是在1,2的维度上沿着第三维求函数
对行求平均值apply(x,2,mean)或者rowMeans(x)
对行求和apply(x,2,sum)或者rowSums(x)
对列求平均值apply(x,1,mean)或者colMeans(x)
对列求和apply(x,1,mean)或者colSums(x)
rnorm(100)随机从正态分布的总体里抽取100个数据
quantile求数据的百分位点,probs=c(0.25,0.75)对quantile进行限定,即求25%和75%对应的分位点是多少
矩阵与数组的区别在数组可以是两个以上的维度,
矩阵有两个维度,apply(x,2,mean)的意思是对数组x的第二个维度(列)求平均值
apply沿数组的某一维度处理数据
apply(数组,维度,函数名)沿着数组的某一维度处理数据,例如将函数用于矩阵的行或列求和sum。
rnorm(100)意思是随机从正态分布的总体里抽取100个数据
quantile()是求数据的百分位点,probs是对quantile进行限定,求多少的百分位点
apply(数组,维度,函数/函数名):沿着数组的某一维度处理数据;
rowSums(x),rowMeans(x),colSums(x),colMeans(x)直接求行列和、平均;
apply():对数组进行循环处理
#apply,沿着数组的某一个维度处理数据
x<-matrix(
1
:
16
,
4
,
4
)
apply(x,
2
,mean)
#求列的平均
apply(x,
2
,sum)
#求列的和
rowSums(x)
#同样可以求行的和
rowMeans(x)
colSums(x)
colMeans(x)
x<-matrix(rnorm(
100
),
10
,
10
)
apply(x,
1
,quantile,probs=c(
0
.
25
,
0
.
75
))
#quantile求数据的百分位点
x<-array(rnorm(
2
*
3
*
4
),c(
2
,
3
,
4
))
apply(x,c(
1
,
2
),mean)
#以第1及第2维为基础,沿第3方向压成平面
apply(x,c(
1
,
3
),mean)
apply(x,c(
2
,
3
),mean)
x <- matrix(rnorm(100),10,10)
//随机从小正泰分布的总体里抽取100个数据,排成10行10列
apply(x,1,quantile,probs=c(0.25,0.75))
//将x传进apply,传进行,传进函数名——求数据的百分位点,指明百分位点
#apply的使用
#apply,沿着数组的某一个维度处理数据 x<-matrix(1:16,4,4) apply(x,2,mean)#求列的平均 apply(x,2,sum)#求列的和 rowSums(x)#同样可以求行的和 rowMeans(x) colSums(x) colMeans(x) x<-matrix(rnorm(100),10,10) apply(x,1,quantile,probs=c(0.25,0.75))#quantile求数据的百分位点 x<-array(rnorm(2*3*4),c(2,3,4)) apply(x,c(1,2),mean)#以第1及第2维为基础,沿第3方向压成平面 apply(x,c(1,3),mean) apply(x,c(2,3),mean)
#apply
x<-matrix(1:16, 4,4 )
apply(x,2 mean) # 沿着x的第二维度求平均,x有两个维度,行和列,第二个维度就是沿着x的列求平均
apply(x,2, sum) # 沿着x的第二维度求和
rowSum(x) / rowMean(x)
colSum(x) / colMean(x)
x2<-matrix(rnorm(100), 10, 10 ) #随机从正太分布的整体里抽出100个数据
x<- rnorm(100) #产生100个服从正态分布的随机数
x<-rnorm(100,3,4) #产生100个均值是3,标准差为4的随机数
apply(x2, 1, quantile, probs=c(0.25,0.75 ))
x3<-array(rnorm(2*3*4), c(2,3,4 ))
apply(x, c(1,2), mean) #在第一维和第二维组成的平面上,沿着第三维求平均
apply:沿着数组的某一维度处理数据。
apply(数组/矩阵,维度,函数/函数名),维度是选择哪个维度,可以用c()
行求和:rowSums(x) 行求平均:rowMeans(x) 列求和:colSums(x) 列求平均:colMeans(x) 这四个函数在用于单纯行\列操作效率比apply高
rnorm(num):随机从正态分布中取num个数据
quantile:求数据的百分位点,可通过probs=c()进行分配