2016-11-26 3 views
1

条件が満たされた場合、plyrコマンドでブレークを正しく指示する方法はありますか?R plyr and break

plyr::l_ply(1:10,function(x){ 
    print(x) 
    if(x > 5) break 
}) 

> Error in .fun(piece, ...) : no loop for break/next, jumping to top level 
+0

利用リターンの代わり – rawr

+0

ハズレを。上ではリターンを使用しても、1から10の数字がすべて印刷されます。 x> 5のときにプロセス全体が終了するようにしておきます。もちろん、これは私が取り組んでいる別の問題を代表する簡単な例です。 –

+0

oh。間違った関数を使用しています – rawr

答えて

0

私はreturnが正しい方法だと信じています。それはちょうど右に配置する必要があります。

plyr::l_ply(1:10,function(x){ 
    if(x > 5){ 
    return() 
    } 
    else{ 
    print(x) 
    } 
}) 

これは与える:

[1] 1 
[1] 2 
[1] 3 
[1] 4 
[1] 5 
+0

ええ、私はこれに気付いていますが、リストが1:1e6と言っていたのは、ループのショートカットです。 –

+0

私は参照してください。だから、あなたはあなたの限界を破る最初の数字を見つけて、それまでにすべての数字を印刷したいのですか? – Chris

+0

私は休憩したい、与えられた論理的条件は何でもかまいません、乱数を選んでください( 'runif(1)> 0.5)'、今日の天気は晴れ、教皇は子供に触れますか?ここで私の質問の目的:私の本当の問題は、このようなものではありません。私は論理的な条件を満たしていれば、早急にプライヤーコールをやめる必要があります。 –