В R documentation on arrays состоянииПонимание индексации массива в R
Значения в векторе данных дают значения в массиве в том же порядке, как они будут происходить в FORTRAN, то есть «колонок крупного заказа,» с первый индекс движется быстрее, а последний индекс - самый медленный.
Затем позже дает 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 на 3 массив а, и Р должен быть интерпретирован, как 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 или я полностью неправильно понял документацию?
Был добавлен еще один ответ, который должен был (вероятно) быть ответом на этот пост. Я добавил скриншот недавно удаленного ответа (http://i.stack.imgur.com/6wHOs.png), чтобы помочь пользователям с репутацией менее 10 тыс. (Что может помочь им). Прошу прощения за неудобства, привет. –