R中的矩阵乘以向量应该返回向量

Cod*_*Guy 1 r vector matrix

在R中,我想将1x3向量乘以3x3矩阵以产生1x3向量.但是R返回一个矩阵:

> v = c(1,1,0)
> m = matrix(c(1,2,1,3,1,1,2,2,1),nrow=3,ncol=3,byrow=T)
> v*m
     [,1] [,2] [,3]
[1,]    1    2    1
[2,]    3    1    1
[3,]    0    0    0
Run Code Online (Sandbox Code Playgroud)

正确的输出应该是矢量,而不是矩阵

Dir*_*tel 5

如有疑问,请尝试帮助系统,例如help("*")help("Arithmetic").你只是使用了错误的操作符.

R> v <- c(1,1,0)
R> m <- matrix(c(1,2,1,3,1,1,2,2,1),nrow=3,ncol=3,byrow=T)
R> dim(m)
[1] 3 3
R> dim(v)
NULL
R> dim(as.vector(v))
NULL
R> dim(as.matrix(v, ncol=1))
[1] 3 1
R> 
R> m %*% as.matrix(v, ncol=1)
     [,1]
[1,]    3
[2,]    4
[3,]    4
R> 
Run Code Online (Sandbox Code Playgroud)

请注意,我们必须先v变成一个合适的向量.你没有说它是1x3还是3x1.但幸运的是R很慷慨:

R> v %*% m
     [,1] [,2] [,3]
[1,]    4    3    2
R> m %*% v
     [,1]
[1,]    3
[2,]    4
[3,]    4
R> 
Run Code Online (Sandbox Code Playgroud)