r - R中的矩阵和向量乘法运算

标签 r matrix vector matrix-multiplication

我觉得 R 中的矩阵运算非常困惑:我们混合了行向量和列向量。

  • 这里我们将x1定义为一个向量,(我假设R默认向量是一个列向量?但它并没有显示它是那样排列的。)

  • 然后我们定义x2x1 的转置,我觉得显示也很奇怪。

  • 最后,如果我们将 x3 定义为矩阵,显示效果会更好。

现在,我的问题是,x1x2 是完全不同的东西(一个是另一个的转置),但我们在这里得到相同的结果。

有什么解释吗?也许我不应该将向量和矩阵运算混合在一起?

x1 = c(1:3)
x2 = t(x1)
x3 = matrix(c(1:3), ncol = 1)

x1
[1] 1 2 3

x2
     [,1] [,2] [,3]
[1,]    1    2    3

x3
     [,1]
[1,]    1
[2,]    2
[3,]    3

x3 %*% x1
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    4    6
[3,]    3    6    9

x3 %*% x2
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    2    4    6
[3,]    3    6    9

最佳答案

参见 ?`%*%`:

Description:

 Multiplies two matrices, if they are conformable.  If one argument
 is a vector, it will be promoted to either a row or column matrix
 to make the two arguments conformable.  If both are vectors of the
 same length, it will return the inner product (as a matrix).

关于r - R中的矩阵和向量乘法运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39025900/

相关文章:

r - ggplot 2's continuous color scale incompatible with knitr' 是 tikzDevice 吗?

c - 在字符矩阵中搜索特定单词

python - Theano矩阵乘以2d矩阵得到3d矩阵

将矩阵从 .txt 复制到数组

c++ - vector<int>() vs vector<int>{} vs NULL vs size=0 有什么区别?

c++ - 如果使用 remove_if 如何删除 vector 的空单元格

r - 如何判断您在R中使用了哪些软件包

r - 如何将一列数据框保留为数据框

r - 转换 HH :MM:SS AM/PM string to time

c++ - Ifstream 读取函数不会加载到 vector 中