Как индексировать матрицу R без ее возврата в вектор - PullRequest
6 голосов
/ 25 января 2012

Я объявил матрицу А 1 на 6, сказав:

A <- matrix(1:6, nrow=1)

Затем я делаю дим (А) и, как и ожидалось, получаю 1 на 6 ... но тогда я делаю А [, 2:5], и я ожидаю, что это будет матрица измерения 1 на 4 с записями 2,3,4,5 ... но вместо этого dim (A [, 2: 5]) дает мне NULL!это ухудшилось в вектор или что-то.Как я могу избежать этого?

В конечном итоге я пытаюсь сделать что-то вроде:

A[,a:b] %*% X[a:b,a:b] %*% t(A[,a:b])

варьируя a и b, чтобы я мог умножить только части вышеуказанных матриц вместе ... но это разбиваеткогда А распадается на вектор ...

Спасибо

1 Ответ

9 голосов
/ 25 января 2012

Используйте ,drop=FALSE в качестве дополнительного (конечного) аргумента для привлечения ].

Пример:

R> M <- matrix(1:4,2,2)
R> M[,2]                  ## looses matrix class
[1] 3 4
R> M[,2,drop=FALSE]       ## forced to a n x 1 matrix
     [,1]
[1,]    3
[2,]    4
R> 

Это может быть основной FAQ, но по причинам совместимости поведение вряд ли изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...