r - 对两个矩阵应用函数

标签 r for-loop matrix apply matrix-multiplication

对于矩阵 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/

相关文章:

r - 从某个文件夹导入几个txt文件

r - 使用 vitae 包编织 Rmd 时出现问题,多个引用书目.lua 错误

r - 如何使用 ggplot2 将标签放在 R 中每个条形的 geom_bar 上

matlab - 测试周围的非零元素

c - 矩阵的逆不准确

r - 使用 'write.table' 时出现额外字符问题

c++ - 奇怪的 C++ 字符串操作循环错误

jQuery - 在 foreach 循环中将变量传递到 .not()

java - 如何有效地从 ArrayList 或字符串数​​组中删除所有空元素?

java - 使用 Matrix4f 围绕多个轴进行框旋转