我有一个维度为1000x100的矩阵。我想逐行制作一个内部产品(每行自己),所以理论上我可以得到一个1000 x 1的矢量。例如:
A<-matrix(c(1,2,3,4),nrow=2,ncol=2,byrow=2)
[,1] [,2]
[1,] 1 2
[2,] 3 4
我想得到一个看起来像这样的矢量:
[,1]
[1,] c(1,2) %*% t(c(1,2))
[2,] c(3,4) %*% t(c(3,4))
我尝试做一个循环,但发生错误:
U<-matrix(nrow=1000,ncol=1)
U
k=0
for(i in 1:nrow(U_hat)){
for(j in 1:nrow(U_hat)){
k=k+1
U[k,1]=U_hat[i,]%*%t(U_hat[j,])
}
}
其中U_hat是维度1000x100的矩阵。
我很感激帮助知道如何进行这种乘法。谢谢。
单独乘以A并取行和:
rowSums(A*A)
## [1] 5 25
这也有效:
apply(A, 1, crossprod)
## [1] 5 25
这也可以:
diag(tcrossprod(A))
## [1] 5 25