13
> 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 にさまざまな種類の行列、さらにはゼロ次元行列を投げる必要があります。マトリックスをベクトルに変更すること自体が私の問題です。

4

2 に答える 2

18

これは R FAQです。あなたがする必要がありますa[3,,drop = FALSE]

于 2012-03-30T19:21:58.173 に答える
9

要素ごとの乗算と行列の乗算を混同しています (「参考文献」を参照?"*")。あなたがしたい%*%

> a[3,]%*%a[,3]
     [,1]
[1,]  150
于 2012-03-30T19:35:37.760 に答える