1

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

final_prod = 0.01 * 0.05 * 0.02

这就是我循环执行的方式。

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)

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

我上面的方法有什么问题?

我知道有 R'ish 方式。但是我想循环执行它的原因是因为涉及更复杂的计算。

4

2 回答 2

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

  2. final_prod您正在变量和之间切换all_prod,这样all_prod一开始就没有定义。

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

    final_prod = prod(fact)
    
于 2012-05-14T01:03:09.613 回答
2

range函数返回一个二元向量,“:”二元运算符只取第一个。所以你得到 1:0.01 这只是 1,然后是一个单项产品事实 [1]。你可以用,

for (i in fact) {all_prod <- all_prod * i } 

...尽管大卫罗宾逊已经向您展示了如何prod更经济地使用:

于 2012-05-14T02:29:32.890 回答