0

次のコードがあります。

for(n in 1:1000){
    ..............
}

これは............1000回実行されます。非常に長く、答えとは関係がないため、完全なコードは入れていません

私の質問は、指定された収束値が小数点以下 4 桁に達するまでコードを実行する方法があるということです。この方程式には初期値が入力され、新しい値が生成されます。このプロセスは、収束が達成されるまで (上記で指定したように) 継続的に反復されます。

編集

コードの最後に、異なるラベル (A、B、C、D) を持つ 4 つの値のセットがあります。私のコード内には、それぞれが異なる値を計算し、互いにフィードする2つの別々の関数があります。つまり、収束とは、関数 1 が関数 2 に特定の値を伝え、A、B、C、D の新しい値を計算し、サイクルが継続し、次回これらの値が関数 2 によって計算された値と同じであることを意味します。

ここで私が尋ねている重要な質問は、コードが取るべき形式 (以下は繰り返しが望ましいことを示唆しています) と、連続する反復の代入表記が同じであるため、収束基準を正しくコーディングする方法です。

4

3 に答える 3

6

forループを終了する方法を探しているだけの場合は、を使用できますbreak

for (n in 1:1000)
    {
    ...
    if (condition)
       break;
    }
于 2012-09-02T17:33:34.147 に答える
6

私のコメントから答えを出すだけで、私はしばしばrepeatここで最高になると思います。開始時に条件を評価する必要はなく、有限の反復回数の後で停止することはありません(もちろん、それが必要な場合を除きます)。

repeat
{
 # Do stuff
 if (condition) break
}
于 2012-09-02T18:09:20.783 に答える
5

何回の反復が必要かわからない場合は、いつでもwhileループを使用できます。一般的な形式は次のようになります。

while(insert_convergence_check_here){
     insert_your_code_here
}

編集:nicoのコメントに応えて、収束基準を確認する前にループを少なくとも1回実行する必要がある場合に備えて、このパターンに従って基本的にdo/whileループを作成することもできることを追加する必要があります。

continue_indicator <- TRUE
while(continue_indicator){
    insert_your_code_here
    continue_indicator <- convergence_check_here
}
于 2012-09-02T17:34:12.487 に答える