Возвращает матрицу n-на-1 из многомерного массива - PullRequest
3 голосов
/ 30 марта 2012

Я был довольно удивлен, когда узнал, что для x <- array(0, c(5,3,1)), например, x[2,,] возвращает vector вместо двумерного array (или matrix).

Почемуэто что этот массив явно интерпретируется как 5 векторов длины 3 вместо 5 массивов 3 на 1?attr(array(0, c(5,3,1)), "dim") дает [1] 5 3 1, как и ожидалось, поэтому кажется, что последнее измерение не потеряно.

Как я могу убедиться, что я получаю двумерный массив?Я понимаю, что массивы - это не что иное, как векторы с дополнительными атрибутами, но я не понимаю этого кажущегося "противоречивого" поведения.

Пожалуйста, просветите меня :) Я использую трехмерный массив в контексте другогоФункция для того, чтобы хранить несколько матриц.Как правило, эти матрицы имеют форму n-на-m, где, в частности, m может быть равно 1 (хотя обычно оно больше).

1 Ответ

7 голосов
/ 30 марта 2012

Это классика, и она уже более десяти лет входит в R FAQ: используйте drop=FALSE, чтобы предотвратить свертывание матрицы из 1 строки / столбца в вектор.

R> M <- matrix(1:4,2,2)
R> M
     [,1] [,2]
[1,]    1    3
[2,]    2    4
R> M[,1]
[1] 1 2
R> M[,1,drop=FALSE]
     [,1]
[1,]    1
[2,]    2
R> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...