r - 在 R 中将向量乘以矩阵应该返回向量

标签 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

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

最佳答案

如有疑问,请尝试帮助系统,例如 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> 

请注意,我们必须先将 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> 

关于r - 在 R 中将向量乘以矩阵应该返回向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151726/

相关文章:

r - 将矩阵的上三角部分转换为3列长格式

c - 旋转位图并将浮点格式的结果坐标转换回像素数组的整数 x,y 值

r - 如何忽略 future 的浏览器调用

r - 如何调用 `function`函数?

C++ : pointer in vector and class inheritance

c++ - 舍入大纲的开始和结束

c - 使用指针打印方阵

Reactable R - 将每页最大行数从 10 更改为 5

r - 在 R 中按多个其他列分组后求列的平均值

C++:无法将 vector 传递给构造函数