0

R でバランスの取れた不完全なブロック デザインを生成するために使用するコードがあります。trt の値は 14、k は 4 で、固定されています。ただし、find.bib() 関数の b の値を変更してデザインを生成し、isGYD() 関数を使用して、そのデザインがバランスのとれた不完全なブロック デザインであるかどうかを確認します。

bibd <- find.BIB(trt = 14, k = 4, b = 64)
bibd
isGYD(bibd)

問題は、このデザインがバランスの取れた不完全なブロック デザインであるという isGYD 関数からの確認を取得するまで、これを複数回実行する必要があることです。このタスクは手動で行います。

私の質問は、for ループと If Then 条件を組み合わせてこれを自動化できるかということです。私のアルゴリズムは、i = 1 から 100 の場合、ブロック デザインを作成し、そのデザインがバランスの取れた不完全なデザインであるかどうかをテストします。そうである場合は、このデザインを保存してループを終了します。不完全な設計のバランスが取れていない場合は、ループの次の繰り返しに進みます。

# run this 1 to 100 times
for (i in 1:100) {
#create balanced incomplete block design by passing value of i fo b
bibd <- find.BIB(trt = 14, k = 4, b = i)
#check if this design is a balanced incomplete block design
if (isGYD(bibd)) {
 #save this design and exit loop
}
#if this iteration didn't give us balanced incomplete block design, take     us to next iteration
}

何か助けはありますか?

4

1 に答える 1

0

はい、単純に変数に代入してループを破ることができます:

bibd.good <- NULL;
for (i in 1:100) {
    bibd <- find.BIB(trt = 14, k = 4, b = i);
    if (isGYD(bibd)) {
        bibd.good <- bibd;
        break;
    };
};
if (!is.null(bibd.good)) {
    ## ... use bibd.good ...
};
于 2015-02-19T18:04:36.060 に答える