1-мерная матрица заменяется вектором в R - PullRequest
11 голосов
/ 30 марта 2012
> 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-D матрицу в качестве матрицы. На самом деле, мне нужно добавить в RcppArmadillo множество матриц, даже нулевую матрицу. Моя проблема заключается в изменении матрицы на вектор.

Ответы [ 2 ]

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

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

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

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

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