为了账号安全,请及时绑定邮箱和手机立即绑定

数组中apply计算问题

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

正在回答

6 回答

简单的例子:

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),其他的数据 以此类推


2 回复 有任何疑惑可以回复我~

对上面的补充:

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

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

0 回复 有任何疑惑可以回复我~

 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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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)就代表列*组了~你自己看看~

8 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

数组中apply计算问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信