我希望有一个矩阵d3(m x n),其每一行相同且等于给定的向量(d0),其大小为n。
我的尝试如下: 让
m=1000
n=20000
d0=runif(n)
d1=diag(d0)
d2=array(1,dim=c(m,n)).
我想计算上述两个矩阵的乘积,d3,其中
d3=d2%*%d1.
这种直接的矩阵乘法方法非常慢。如何在上述特殊情况下更快地进行乘法?感谢。
答案 0 :(得分:2)
我想要一个矩阵d3(m x n),每行都是相同的 等于具有维数n的给定向量(d0)。
使用matrix
函数和向量回收这一点很简单。
m=4
n=5
set.seed(42)
d0=runif(n)
matrix(d0, nrow = m, ncol = n, byrow = TRUE)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455
#[2,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455
#[3,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455
#[4,] 0.914806 0.9370754 0.2861395 0.8304476 0.6417455
这应该是最快的解决方案。