在R中使用for循环的双重求和

问题描述 投票:1回答:2

我正在尝试对R中的一个非常复杂的公式进行双重求和,但我不认为for循环正如我所期望的那样工作。

这里只是我正在努力做的复杂事情的基本版本。

\ sum_ {i = 3} ^ {5} \ sum_ {j = 2} ^ {3}(i * j)

我希望这可以将所有术语加在一起,如3 * 2 + 3 * 3 + 4 * 2 + 4 * 3 + 5 * 2 + 5 * 3,这样可以得到60.但是我的代码没有产生那个所以想知道R实际上用这个双循环做了什么。

 for(i in 3:5){
 for(j in 2:3){
   x<-i*j
     }
    }

我知道这个例子是微不足道的,但是如果我能理解这一点,希望能够将它应用于我想要做的更复杂的事情。

谢谢!

r loops for-loop sum double
2个回答
1
投票

你忘了在每个循环中添加x:

x <- 0
for(i in c(3,4,5)){
  for(j in c(2,3)){
    x <- x + i*j # add x here
  }
}
x

编辑:这与@ G5W所说的相同


0
投票

特定

x <- 3:5
y <- 2:3

你可以接近它

out <- integer()
for(i in x){
  for(j in y){
    out <- c(out, i*j)
  }
}
sum(out)

或者,如上所述累积矢量(可能很昂贵),或者

with(expand.grid(x, y), sum(Var1*Var2))

要么

sum(x %o% y)这是sum(outer(x,y))的另一种方式

© www.soinside.com 2019 - 2024. All rights reserved.