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.01 ではなく 0.00001 にする必要があります。

上記の私のアプローチの何が問題になっていますか?

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関数は 2 要素のベクトルを返し、":" 2 項演算子は最初の 1 つだけを取ります。したがって、1:0.01 が取得されます。これは 1 であり、単一の用語の製品ファクト [1] です。あなたは、

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

prod...ただし、David Robinson は、より経済的に使用する方法を既に示しています。

于 2012-05-14T02:29:32.890 に答える