【发布时间】:2015-07-29 21:28:42
【问题描述】:
我需要计算:
我可以进一步分解成:
在 R 中我写了这段代码
att_num <- dim(X)[2]
A <- matrix(0, att_num, att_num)
for(i in seq(att_num)) A[,i] <- colSums(dx * X * X[,i])
但是由于循环,它非常慢。这一行占用了我脚本中的大部分计算时间。有什么方法可以改进这种计算?
-
dx是大小为 [1 x m] 的向量 -
X是一个大小为 [n x m] 的矩阵
例子:
dx <- sample(1:100, 30, replace=T)
X <- data.frame(replicate(30,sample(0:1,100,rep=TRUE)))
att_num <- dim(X)[2]
A <- matrix(0, att_num, att_num)
for(i in seq(att_num)) A[,i] <- colSums(dx * X * X[,i])
【问题讨论】:
-
请提供一个可重现的例子
-
crossprod(dx*X, X) -
请注意
dx的长度与X中的观察数量不匹配。它被回收,这可能是也可能不是你需要的。另外,我不确定你的代码是否正确地实现了方程。 -
抱歉造成混淆,
dx的长度确实总是符合X中的观察次数。