1

R のforループでシミュレーションを実行しています。ループの各ステップで、 VGAMパッケージのvglm関数を使用してベータ二項分布を当てはめようとしています。

vglm(data ~ 1, betabinomial)

ただし、生成されたデータの一部では、ベータ 2 項モデルが適合せず、関数がクラッシュします。クラッシュするため、R はループを抜けて停止します。ループの次のステップに進みたいと思います。関数tryCatchを認識していますが、私の場合は使用できませんでした。現時点では、私のコードは次のとおりです ( for ループが別の forループにネストされていることに注意してください)。

for (i in 1:nsimu) {
    ## Some code to generate Pos and Neg
    data <- cbind(Pos,Neg)
    if (sum(Pos)==0) {
       ##Go to next step
    } 
    else { 
       vglm(data ~ 1, betabinomial)
    } 
} 

助けや提案をありがとうございました。

ステファン

4

2 に答える 2

3

やってみませんか

if (sum(Pos) > 0) 
  vglm(data ~ 1, betabinomial)

設計上、条件が評価される場合、R は次の改行でのみコードを実行しますTRUE{}ただし、あいまいさを避けるために中括弧を使用して式をラップするのが常に最善ですが、else条件を追加して他の式を評価することができます。Pos==0

if (sum(Pos) > 0){
  vglm(data ~ 1, betabinomial)
} else {
  do something else
}
于 2013-06-14T08:42:18.790 に答える