在R中,一维矩阵被转换为向量。

14
> 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中,一维矩阵会被转换为向量。我能否避免这种情况?我想要保留一维矩阵的矩阵形式。实际上,我需要将多种类型的矩阵传递给RcppArmadillo,甚至是零维矩阵。把矩阵变成向量是我的问题。

class(a[3,]) 只会告诉你存储模式。你可能应该使用 str(),因为它会告诉你长度。 - IRTFM
2个回答

19

9
你混淆了逐元素乘法和矩阵乘法(参见?"*")。你需要使用%*%
> a[3,]%*%a[,3]
     [,1]
[1,]  150

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接