1-мерная матрица заменяется на вектор в R

> a<-matrix(c(1:9),3,3)
> a
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> a[3,]*a[,3]  # I expect 1x1 matrix as result of this.
[1] 21 48 81
> class(a)
[1] "matrix"
> class(a[3,])
[1] "integer"

В R 1-мерная матрица изменяется на вектор. Могу ли я избежать этого? Я хотел бы сохранить матрицу 1-D в виде матрицы. На самом деле, мне нужно бросить много матриц в RcppArmadillo, даже с нулевой матрицей. Меняя матрицу на вектор сама по себе, это моя проблема.

Ответ 1

Это R FAQ. Вам нужно сделать a[3,,drop = FALSE].

Ответ 2

Вы вводите в заблуждение поэтапное умножение и умножение матриц (см. ?"*"). Вы хотите %*%:

> a[3,]%*%a[,3]
     [,1]
[1,]  150