我正在尝试对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
}
}
我知道这个例子是微不足道的,但是如果我能理解这一点,希望能够将它应用于我想要做的更复杂的事情。
谢谢!
你忘了在每个循环中添加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所说的相同
特定
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))
的另一种方式