对于矩阵 Beta 和 x1,我尝试应用 re.fn 来查找 (colSums(Beta*b))^2 的最大值。这里,b 是矩阵 x1 的列。我想知道如何才能使这个算法更快。
set.seed(1)
D=10000
M=1000; N=1000
Beta=matrix(rnorm(N*D),ncol=D)
x1=matrix(rnorm(N*M),N)
re.fn <- function(b) {
sum1 <- colSums(Beta*b)
T_nc1 <- sum1^2
T_nc <- max(T_nc1)
return(T_nc)
}
T_nc=apply(x1,2,re.fn)
最佳答案
使用crossprod
应该会更快
T_nc2 <- apply(crossprod(Beta,x1)^2,2,max)
all.equal(T_nc,T_nc2)
# [1] TRUE
关于r - 对两个矩阵应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36074191/