R语言apply族函数详解

    xiaoxiao2025-06-18  78

            在R语言中,apply系列函数的基本作用是对数组(array,可以是多维)或者列表(list)按照元素或元素构成的子集合进行迭代,并将当前元素或子集合作为参数调用某个指定函数。apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。apply族函数分别有apply函数,tapply函数,lapply函数,mapply函数。每一个函数都有自己的特点,在处理不同类型的数据可以选用相对应的函数。

    1、 apply函数

          apply函数只能用于处理矩阵类型的数据,也就是说所有的数据必须是同一类型。因此要使用apply函数的话,需要将数据类型转换成矩阵类型。

    apply函数一般有三个参数,第一个参数代表矩阵对象,第二个参数代表要操作矩阵的维度,1表示对行进行处理,2表示对列进行处理。第三个参数就是处理数据的函数。apply会分别一行或一列处理该矩阵的数据。

     

    a<-matrix(1:12,nrow=3) a #求每列的平均值 apply(a,2,mean)

    其中a是一个3*4的矩阵,如下。运行结果为 2  5  8 11

         [,1] [,2] [,3] [,4] [1,]    1    4    7   10 [2,]    2    5    8   11 [3,]    3    6    9   12

           我们也可以使用colMeans()rowMeans( ),对矩阵的列和行分别求平均值,rowSums( ),colSums(),,对矩阵的列和行分别求和。

    如过数据中NA,那么在求行列的平均值或和的时候,NA所在的行列的计算结果也没NA

    apply(a,1,mean,na.rm=TRUE)

    这样的话,它会自动忽略NA,只计算其他不是NA的值。rowMeans( )中也可以添加na.rm=TRUE参数。效果相同。

    #矩阵中添加了一个na a[2,1]<-NA #不计算NA存在的那一行或那一列 apply(a,1,mean)

    这个时候矩阵为

         [,1] [,2] [,3] [,4] [1,]    1    4    7   10 [2,]   NA    5    8   11 [3,]    3    6    9   12

         结果为[1] 5.5  NA 7.5。如果代码写成下面这个样子

    apply(a,1,mean,na.rm=TRUE)结果为 5.5 8.0 7.5

    2、lapplysapply函数

           lapply和sapply函数可以用于处理列表数据和向量数据(vector/list)。lapply函数得到处理得到的数据类型是列表,而sapply函数得到处理的数据类型是向量。这两个函数除了在返回值类型不同外,其他方面基本完全一样。

     

    3、tapply函数

           它通常会有三个参数,第一个参数代表数据,第二个参数表示如何对数据进行分组操作,第三个参数指定每一个分组内应用什么函数。也就是说tapply函数就是把数据按照一定方式分成不同的组,再在每一组数据内进行某种运算。

    4、mapply函数

             mapply函数主要是对多个列表或者向量参数使用函数

    补充与:2017年1月8日

     函数名称

         使用对象

       返回结果

    apply()

     对矩阵,数组或者数据框    

     向量,数组或者列表

    lapply()

     对列表,数据框或者向量

     列表

    sapply()

     对列表,数据框或者向量 

     向量,数组或列表

    tapply()

     对不规则阵列

     阵列

    mapply()

     对多个列表或者向量参数

     列表

    转载请注明原文地址: https://ju.6miu.com/read-1300067.html
    最新回复(0)