質問

スタイルのあるスタイルのループを書く方法について疑問に思っていましたか?

私は見つけました この郵便受け:

Repeat {}を使用し、if()を使用して条件を確認し、「ブレーク」コントロールワードでループを終了することができます。

それが正確に何を意味するのかわかりません。あなたがそれを理解している場合や、別の解決策がある場合、誰かが詳しく説明してください。

役に立ちましたか?

解決

かなり自明です。

repeat{
  statements...
  if(condition){
    break
  }
}

または私が思うだろうそのようなこと。ループ中にDOの効果を取得するには、ステートメントのグループの最後にあなたの状態を確認するだけです。

他のヒント

見る ?Control または r言語定義:

> y=0
> while(y <5){ print( y<-y+1) }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

それで do_while Rには別の構造として存在しませんが、次のように偽造できます。

repeat( { expressions}; if (! end_cond_expr ) {break} )

入力できないヘルプページを表示したい場合 ?while また ?repeat コンソールでは、むしろ使用する必要があります ?'repeat' また ?'while'. 。を含むすべての「コントロール構成」 if 同じページにあり、すべてが「?」の後に引用する必要があります。したがって、インタープリターはそれらを不完全なコードとは見なさず、継続「+」を与えます。

他の回答に基づいて、私はwhileループ構造を使用してdo-動作を実現する例を共有したかったのです。 while条件で単純なブール変数を使用し(trueに初期化)、IFステートメントの後半で実際の条件を確認します。 IFステートメント内の継続<-false(おそらくより効率的)ではなく、ブレークキーワードを使用することもできます。

  df <- data.frame(X=c(), R=c())  
  x <- x0
  continue <- TRUE

  while(continue)
  {
    xi <- (11 * x) %% 16
    df <- rbind(df, data.frame(X=x, R=xi))
    x <- xi

    if(xi == x0)
    {
      continue <- FALSE
    }
  }

そのユーザー42-'は完璧なアプローチに気づきます {
*「while」= "繰り返しないようになるまで繰り返し」
*コードの等価性:

do while (condition) # in other language
..statements..
endo

repeat{ # in R
  ..statements..
  if(! condition){ break } # Negation is crucial here!
}

} 他の人から十分な注意を払わなかったので、具体的な例を介して彼のアプローチを強調し、前進させます。 do-whileで状態を否定しない場合(経由 ! または否定をとることによって)、歪んだ状況(1.値の持続性2.無限ループ)がコードのコースに応じて存在します。

ガウスで:

proc(0)=printvalues(y);
DO WHILE y < 5;    
y+1;
 y=y+1;
ENDO;
ENDP;
printvalues(0); @ run selected code via F4 to get the following @
       1.0000000 
       2.0000000 
       3.0000000 
       4.0000000 
       5.0000000 

R:

printvalues <- function(y) {
repeat {
 y=y+1;
print(y)
if (! (y < 5) ) {break}   # Negation is crucial here!
}
}
printvalues(0)
# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5

まだ do-の状態の否定がなければ、サルセドの答えは間違っていると主張します。上記のコードで否定記号を削除してこれを確認できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top