R

时间:2017-07-26 13:46:49

标签: r loops for-loop sum double

我正在尝试对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
     }
    }

我知道这个例子很简单,但是如果我能理解这个希望能够将它应用到我想要做的更复杂的事情上。

谢谢!

2 个答案:

答案 0 :(得分: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所说的相同

答案 1 :(得分: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))

的另一种方式