在R中乘以产品通过循环

nev*_*int 1 math product r multiplication

我想将fact向量中的所有元素相乘,即:

final_prod = 0.01 * 0.05 * 0.02
Run Code Online (Sandbox Code Playgroud)

这就是我在循环中的方式.

fact <- c(0.01,0.05,0.02)

final_prod <- 1;
for (i in 1:range(fact)){
   all_prod <- all_prod * fact[i];
}

print(final_prod)
Run Code Online (Sandbox Code Playgroud)

但它给出的最终产品是错误的.它应该是0.00001而不是0.01.

我上面的方法出了什么问题?

我明白有R'ish方式.但我想在循环中执行它的原因是因为涉及更复杂的计算.

Dav*_*son 6

  1. 而不是range,你想要的1:length(fact).

  2. 你是变量之间的切换final_prodall_prod,这样all_prod永远不会在一开始定义.

  3. 你为什么不想这样做R方式,这需要更少的代码?无论所涉及的计算是多么复杂,它可能是(你可以尝试在这里解释),但为此您只需使用该函数prod:

    final_prod = prod(fact)
    
    Run Code Online (Sandbox Code Playgroud)