【问题标题】:Multiplying Product Via Loop in R通过R中的循环乘积
【发布时间】:2012-05-14 00:57:32
【问题描述】:

我想将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 方式。但原因 我想循环执行是因为有更复杂的 涉及计算。

【问题讨论】:

  • 检查函数range。它不像你想象的那样做。
  • 这甚至不符合您的要求...您需要输入确切的代码。也许您的意思是初始化 all_prod 而不是 final_prod(并返回 all_prod)。

标签: r math product multiplication


【解决方案1】:
  1. 你想要1:length(fact)而不是range

  2. 您正在变量final_prodall_prod 之间切换,因此all_prod 从未在开始时定义。

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

    final_prod = prod(fact)
    

【讨论】:

    【解决方案2】:

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

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

    ...尽管 David Robinson 已经向您展示了如何更经济地使用 prod

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2016-02-15
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多