R中的矩阵点积

Mak*_*iyo 0 r dot-product

我想弄清楚如何点积。

b = matrix(1:70, ncol=7)
g= matrix(1:48, ncol=6)
resulta = matrix(0,6,7)
for (c in 1:ncol(b)){
  for (i in 1:ncol(g)){
    resulta[i,c] <- sum((g[,i]) * (b[,c]))
  }
}
Run Code Online (Sandbox Code Playgroud)

警告信息:

1: In (g[, i]) * (b[, c]) :
  longer object length is not a multiple of shorter object length
2: In (g[, i]) * (b[, c]) :
  longer object length is not a multiple of shorter object length
Run Code Online (Sandbox Code Playgroud)

..................... 共有 42 条相同消息

Vas*_*ash 5

每当您将矩阵相乘时,您必须确保维度使得第一个矩阵的 #columns 与第二个矩阵的 #rows 相同,即如果第一个矩阵是a x b,则第二个矩阵必须是b x c(c 和 a 可能相等也可能不相等)所以结果矩阵是a x c。

在您的情况下,矩阵 b70 x 7表示矩阵 g 应该是一个7 x something矩阵。换句话说,矩阵 g 应该正好有 7 行。

一旦你固定了维度,试试这个快速矩阵乘法:
resulta <- b %*% g
resulta