【发布时间】:2016-03-04 07:31:07
【问题描述】:
我试图编写一个带有双循环的函数,因为我必须模拟一个双和。这段代码 我的代码可以运行,但速度很慢,如何加快速度?
a & y 是向量,x 是矩阵。它们都是相同的长度,即 100。X 为 100x4(100 行,4 列)
X1 <- matrix(rnorm(4*100), ncol=4)
y1 <- sign(X1[,1] + X1[,2] > 0)*2 - 1
fn <- function (a,x,y){
dsum <-0
for(i in 1:length(y)){
for(j in 1:length(y)){
dsum <- dsum + a[j]*a[i]*y[j]*y[i]*(t(x)[,j])%*%x[i,]
}
}
res <- sum(a)-.5*dsum
return (res)
}
我尝试过 sum(a)-.5%*%sum(a%o%X%o%y*a%o%t(X)%o%y) 但我肯定错了。
【问题讨论】:
-
想提供更多细节?
a和y是否共享相同的长度?x的维度是多少?您能解释一下您要的金额是多少吗? -
它们的长度都是一样的,即100。X是100x4(100行,4列)
-
请在您的帖子中添加更多详细信息,而不是在 cmets 中。
-
t(x)[,j]中的元素与t[j,]中的元素相同
标签: r