数据向量中的值以与FORTRAN中出现的顺序相同的顺序给出数组中的值,即"列主要顺序" ,第一个下标移动最快,最后一个下标最慢.
然后,它通过将数据加载到二维数组中给出了一个澄清的例子:
> 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
Run Code Online (Sandbox Code Playgroud)
从与其他语言的经验,我想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
Run Code Online (Sandbox Code Playgroud)
所以,我可以看到这里发生的事情是,我们提取的元素x[1, 3],x[2,2]和x[3, 1].好吧,但这不完全违背上述"专栏主要订单"的说法吗?
根据我的理解,i应该是一个2乘3阵列,R应该解释x[i]为x[i[1, 1], i[2, 1]], x[i[1, 2], i[2, 2]], ....但是,我们观察到的是,R确实如此x[i[1, 1], i[1, 2]], x[i[2, 1], i[2, 2]], ...
这是R中的根本不一致,还是我完全误解了文档?
"列主要顺序"仅表示内部矩阵是逐列排序的向量; 看到了
x[1:20]
Run Code Online (Sandbox Code Playgroud)
是1, 2, 3, ..., 19, 20.尺寸在科学中照常排序 - 第一行,然后是列,然后是深度,然后是深度...第三个例子很棘手:如果i具有相同数量的x具有尺寸的列,则将其解释为矢量化选择.如果不是,都i和x都受宠若惊逐列向量和简单的矢量指数化规则...例如x[t(i)]是1:20[c(1,3,2,2,3,1)].