gpt4 book ai didi

r - 向量化 R 中的双重求和

转载 作者:行者123 更新时间:2023-12-05 00:50:59 26 4
gpt4 key购买 nike

enter image description here

如果我有这样的双重求和,我如何完全矢量化它? (无循环)

一个好的起点是获取向量 i 和 j。例如如果 n = 2:

i = 0:2
j = c(0,0,1,0,1,2)

那我们接下来应该怎么处理呢?

最佳答案

  1. i = 0j = 0没有贡献,所以求和可以从 1 开始,而不是 0;

  2. outer可用于评估j * i * (i + 1)为所有 i = 1, 2, ..., nj = 1, 2, ..., n ,给出 n -by- n方阵;

  3. 求和结束j <= i ,仅涉及该矩阵下三角部分的元素。

n <- 2
i <- 1:n
j <- 1:n
x <- outer(i, j, function (i, j) j * i * (i + 1))
sum(x[lower.tri(x, diag = TRUE)])
#[1] 20

一种不太直观但更有效的方法是生成 (i, j)直接索引所有下三角元素。

n <- 2
i <- sequence(n:1, 1:n)
j <- rep(1:n, n:1)
sum(j * i * (i + 1))
#[1] 20

实际上,经过一些简单的数学运算,我意识到这可以简化为一个求和:

n <- 2
i <- 1:n
0.5 * c(crossprod(i * (i + 1)))
#[1] 20

关于r - 向量化 R 中的双重求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73272941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com