arrays - 了解 R 中的数组索引

标签 arrays 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]。好的,但这不完全违背了上述“列主要顺序”的说法吗?

据我了解,i 应该是 2 x 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]

1, 2, 3, ..., 19, 20。维度在科学中像往常一样排序——首先是行,然后是列,然后是深度,然后是超深度...... 第三个例子很棘手:如果 i 的列数与 x 的维度相同,则将其解释为矢量化选择。如果不是,则 ix 都适用于按列向量,并且适用简单的向量索引规则...例如 x[t(i)]1:20[c(1,3,2,2,3,1)].

关于arrays - 了解 R 中的数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3755434/

相关文章:

r - 将日期和时间组合到日期列中进行绘图

c# - 使用不同的 Type 对象访问 object[]

javascript - 上一节完成后显示下一个容器

C++ 将字符串数组 [] 复制到 vector <string>

c - K&R C 练习 3-3 编辑数组中的 char 元素不起作用?

r - 无法创建生存对象 : error "Time variable is not numeric"

r - 使用 glmer 处理嵌套数据

javascript - Rails 上 .js.erb 文件中的 Ruby 数组到 js 数组

r - 安装 gdata 失败(在 64 位 Linux 上)

r - 如何模拟50个随机样本并计算每个样本的均值和方差