在书中(第105/106页),矩阵乘以向量:
# create a matrix that shows the links between pages
A = matrix(c(0, 1, 1, 0, 0, 0,
1, 0, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0,
0, 0, 1, 0, 1, 0,
0, 1, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0),
nrow = 6, ncol = 6, byrow = TRUE,
dimnames = list(c("d1", "d2", "d3", "d4", "d5", "d6"),
c("d1", "d2", "d3", "d4", "d5", "d6")));
h = c(rep(1,6));
t(A) * h
运行时,我得到一个矩阵,而不是矢量。作者正在做什么矩阵运算以及它如何映射到R,因为结果是结果矩阵的总和,即:
bookResult = c(1,3,5,1,2,1)
最佳, [R
答案 0 :(得分:4)
对于R中的矩阵乘法,您应该使用%*%
,而不是*
。 (我有点不清楚:你发布了一些你写的东西的代码,还是这本书的摘录?)
无论如何,使用此运算符可以得到您想要的相同结果:
> t(A) %*% h
[,1]
d1 1
d2 3
d3 5
d4 1
d5 2
d6 1
> as.vector(t(A) %*% h)
[1] 1 3 5 1 2 1
通过在R提示符下键入?matmult
,您可以在R中了解有关矩阵乘法的更多信息。