问答详情
源自:4-2 R语言函数 apply

数组中apply计算问题

在数组中,apply(x,c(1,2),mean)具体是怎么计算的?是对数组中1,2维矩阵相乘除第4维得到的吗?

提问者:Andy992 2016-03-10 10:21

个回答

  • qq_吉祥如意_10
    2018-06-28 15:16:50

    简单的例子:

    l <- array(1:24,dim = c(2,3,4))

    > l

    , , 1

         [,1] [,2] [,3]

    [1,]    1    3    5

    [2,]    2    4    6

    , , 2

         [,1] [,2] [,3]

    [1,]    7    9   11

    [2,]    8   10   12

    , , 3

         [,1] [,2] [,3]

    [1,]   13   15   17

    [2,]   14   16   18

    , , 4

         [,1] [,2] [,3]

    [1,]   19   21   23

    [2,]   20   22   24

    M <- apply(l,c(1,2),mean)

    M

         [,1] [,2] [,3]

    [1,]   10   12   14

    [2,]   11   13   15

    其中c(1,2) 1代表行,2代表列, M计算方式就是 l的4组数据中 行和列 对应位置的平均值(M[1,1] =(1+7+13+19)/4=10),其他的数据 以此类推


  • 俊介的忧伤
    2016-12-15 15:52:30

    对上面的补充:

    #1,3纬度上的数对2纬度来求平均(即除以3)。即,,1的第一行的数据求和除以3。
        > apply(x,c(1,3),mean)

     #2,3纬度上的数对1纬度求平均(即除以2)。即,,1的第一列数据求和除以2
        > apply(x,c(2,3),mean)

  • 俊介的忧伤
    2016-12-15 15:47:52

     apply(x,c(1,2),mean)

    意思是:#1,2纬度上的数对3纬度来求平均。即1,2纬度的,,1中第一条记录,加上,,2第一条记录,加上,,3第一条记录加上,,4第一条记录求平均。

    ,,1    ,,2   ,,3  ,,4如下:

       #Rstudio控制台的内容

      > x <- array(rnorm(2*3*4),c(2,3,4))
        > x
        , , 1

                  [,1]      [,2]     [,3]
        [1,] -1.042544 -1.041521 1.284045
        [2,] -1.618926 -1.196427 2.036937

        , , 2

                  [,1]      [,2]       [,3]
        [1,]  0.8827615 0.2443569  0.4399112
        [2,] -0.6728983 0.1800479 -0.2486564
        
        , , 3
        
                 [,1]       [,2]      [,3]
        [1,] 0.4385233  0.1771418 -0.514778
        [2,] 0.7612346 -1.4176608 -1.193967

        , , 4

                  [,1]      [,2]       [,3]
        [1,] 1.4522751 0.7872514 -0.3324009
        [2,] 0.7958228 1.0489825 -0.5487616

  • qwertyuioplkjh
    2016-11-27 09:15:43

    那apply是只能沿着一个维度么 能不能沿着两个维度

  • 慕容6023692
    2016-10-26 11:20:08

    x赋值函数中的2*3*4分别对应行*列*组(相对应的维度即为1*2*3)

    apply(x,c(1,2),mean)中1,2对应的维度为行*列,不需要考虑组,所以对每组相同位置的所有元素相加后求平均,因此输出的结果为2行3列的矩阵

    同理,apply(x,c(1,3),mean)中1,3对应的维度为行*组,所以分别对每组中的行求平均,因此输出的结果为2行4列的矩阵(x中有4个组,每组中有2行)

    同理,(2,3)就代表列*组了~你自己看看~

  • 淡如辰
    2016-03-10 20:20:06

    就是在数组中1,2维这个平面上对4维求平均 举个例子  假设在(,,1)中对应数据 1  ,在(,,2)对应(1,1)数据2 ,在(,,3)中对应数据 3,在(,,4)中对应数据 4 ,最后就是求1 2 3 4 的平均值  只得到一个二维的结果