首页 > 解决方案 > 如何更改 colsums 和 sum 以在公式中循环?

问题描述

我有一个名为的向量,y其中包含n数字元素和一个矩阵,其元素为数字。我想对上述数据使用以下公式: 我在 R 中使用函数和编写了以下代码:n*nw在此处输入图像描述colSumssum

dy<-y-mean(y)
n*(y-mean(y))*colSums(w*dy)/sum(dy^2)#=local[,1]

现在,我想更改上面的代码以使用for循环编写它(不使用colSumsand sum)。实际上,我想使用for循环而不是使用 colSums 和sum.

预先感谢您的帮助。

标签: rloopssum

解决方案


我不知道你为什么要使用for-loop,因为在这种情况下有很多缺点,但我们开始吧。

首先我们计算支配者:

dy_square_sum <- 0

for (i in seq_along(y)) {
  dy_square_sum <- dy_square_sum + dy[i]^2
}

在下一步中,我们计算枚举器并建立您想要的输出:

weighted_sum <- rep(0,n)
output <- rep(0, n)

for (i in seq_along(y)) {
  for (j in seq_along(y)) {
    weighted_sum[i] <- weighted_sum[i] + w[j,i] * dy[j]
  }
  output[i] <- n * dy[i] / dy_square_sum * weighted_sum[i]
}

或稍微简化但效率较低

output <- rep(0, n)
for (i in seq_along(y)) {
  for (j in seq_along(y)) {
    output[i] <- output[i] + n * dy[i] * w[j,i] * dy[j] / dy_square_sum 
  }
}

推荐阅读