数组 – 理解R中的数组索引

R documentation on arrays

The values in the data vector give the values in the array in the same order as they would occur in FORTRAN, that is “column major order,” with the first subscript moving fastest and the last subscript slowest.

然后它通过将数据加载到二维数组中来提供a clarifying example

 > x <- array(1:20, dim=c(4,5))   # Generate a 4 by 5 array.
 > x
      [,1] [,2] [,3] [,4] [,5]
 [1,]    1    5    9   13   17
 [2,]    2    6   10   14   18
 [3,]    3    7   11   15   19
 [4,]    4    8   12   16   20

根据其他语言的经验,我认为x [1,2]而不是x [2,1]将是2,但这很容易调整我的想法.然而,就像我进行心理模型转换一样快,下一个例子将它分开:

 > i <- array(c(1:3,3:1), dim=c(3,2))
 > i                             # i is a 3 by 2 index array.
      [,1] [,2]
 [1,]    1    3
 [2,]    2    2
 [3,]    3    1
 > x[i]                          # Extract those elements
 [1] 9 6 3

所以,我可以看到这里发生的是我们提取元素x [1,3],x [2,2]和x [3,1].好吧,但这不完全违背上述“专栏主要订单”的说法吗?

根据我的理解,我应该是一个2乘3的数组,R应该将x [i]解释为x [i [1,1],i [2,1]],x [i [1,2] ],[[2,2]],….但是,我们观察到的是,相反,R做了x [i [1,1],i [1,2]],x [i [2,1] ],我[2,2]],…

这是R中的根本不一致,还是我完全误解了文档?

最佳答案
“列主要顺序”仅表示内部矩阵是逐列排序的向量;看到了

x[1:20]

是1,2,3,…,19,20.尺寸在科学中照常排序 – 先行,然后是列,然后是深度,然后是深度…
第三个例子很棘手:如果我的x具有相同数量的列,则将其解释为矢量化选择.如果不是,i和x都被奉承到列向量并且简单的向量索引规则适用…例如x [t(i)]是1:20 [c(1,3,2,2,3,1) )].

转载注明原文:数组 – 理解R中的数组索引 - 代码日志