r - 如何更改 colsums 和 sum 以在公式中循环?
问题描述
我有一个名为的向量,y
其中包含n
数字元素和一个矩阵,其元素为数字。我想对上述数据使用以下公式:
我在 R 中使用函数和编写了以下代码:n*n
w
colSums
sum
dy<-y-mean(y)
n*(y-mean(y))*colSums(w*dy)/sum(dy^2)#=local[,1]
现在,我想更改上面的代码以使用for
循环编写它(不使用colSums
and sum
)。实际上,我想使用for
循环而不是使用 colSums 和sum
.
预先感谢您的帮助。
解决方案
我不知道你为什么要使用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
}
}
推荐阅读
- spring-boot - spring-boot 找不到 sqlite 驱动
- python - Python DataFrame循环和切片问题
- javascript - 从 ARROW 函数 (es6) 到 ES5
- drupal - 永久删除 Drupal 8 中未使用/孤立的文件
- python - jupyterlab 交互式绘图
- java - Spring 应用程序不能在 JBOSS 中运行,但可以与 Tomcat 一起使用
- amazon-web-services - Terraform EMR 调整大小,破坏整个集群
- sql - 如何将基础一列与相关列旋转?
- c# - Automapper:使用可为空类型的意外映射行为
- javascript - 如果我的 X 大于 2000,如何将 Y 固定为 2?