2017-06-27 16 views
1

私はランダム化プロセスをシミュレートしようとしています。私はwhileループを使わなければならないと思うし、私は自分のRコードで達成しようとしているものをどのように構造化するのかよく知らない。ランダム化スキームのプログラミングwhileループ

私は、3つのクラスa、b、cをそれぞれ3:2:1の比率で配布したいと考えています。この比率では、これらのクラスの設定最小限の平衡」を含むベクターは、このようなものになります。

class_1<-"a" 
class_2<-"b" 
class_3<-"c" 

ratio_a<-3 
ratio_b<-2 
ratio_c<-1 
min_set<-c(rep(class_1,ratio_a),rep(class_2,ratio_b),rep(class_3,ratio_c)) 

をこの最小セットは、次のようなものになります。

min_set 
"a""a""a""b""b""c" 

をさんは、私がしたいとしましょう

block_1<-matrix(0,k,length(min_set)) 

for(i in 1:k) 
    block_1[i,]<-min_set 

これは私のmin_setで新しいマトリックスを作成します。この最小限のバランスの取れたセットのk数が、私はこのようなものを作成することができていますk行のベクトル。

のは、今これはと行うことができます(治療の割り当てをc)サンプルのクラス(A、B、によって決定されるだろう)私は交換せずにblock_1からサンプリングしたいとしましょう:

sample(as.vector(block_1),n,replace=F) 

からここで、私は(amonkのおかげ)としてmin_setの全てのサンプリング結果の順列を列挙することができます。

myList <- permn(min_set) 
all_out <- data.table(matrix(unlist(myList),byrow = T,ncol = 6)) 

All_outはmin_setの各順列を表す行のDFです。ここで私は助けが必要です。

は私がmin_setのサンプル1つの順列(すべてのアウトの行の1つ)を持つまでblock_1から採取したいのは、

#Create inactive urn 
block_2<-vector('numeric',length=dim(block_1)[1]*dim(block_1)[2]) 

第二のブロックを作成してみましょう。私のコードは、この(現在は動作していない)のようなものになります。私はblock_2min_setを達成したら

while (block[2]!='any row of all_out'){ 
    for (i in 1:(dim(block_1)[1]*dim(block_1)[2])) 
    block_2[i]<-sample(as.vector(block_1),i,replace=F) 
} 

を、私は、p-6のサンプル(すなわちを保ち、block_2から戻っblock_1にmin_setを返却したいのですがmin_setの一部ではないもの)をblock_2に格納します。

事前に指定された数の割り当てが行われるまで繰り返します。

答えて

0

ので、文字の特定のセットのために:

>min_set 
[1] "a" "a" "a" "b" "b" "c" 

すべての順列が(の類似文字列あたりの文字数のを尊重)が生成されます。

library(combinat) 
library(data.table) 

myList <- permn(min_set) 
myDT <- data.table(matrix(unlist(myList),byrow = T,ncol = 6)) 

> myDT 
    V1 V2 V3 V4 V5 V6 
1: a a a b b c 
2: a a a b c b 
3: a a a c b b 
4: a a c a b b 
5: a c a a b b 
---     
716: a c a a b b 
717: a a c a b b 
718: a a a c b b 
719: a a a b c b 
720: a a a b b c 
+0

私は私のためにいくつかのpsedoコードを追加しました質問 – lecreprays

+0

@lecrepraysあなたが説明するようなもっと現実的なアプローチを追加することができますが、今回はいくつかのサンプルデータフレームを追加します – amonk

+1

私はいくつかの例を追加しました。いくつかのサンプルデータを整理しようとしていますが、うまくいけば私の質問がより明確になりました。 – lecreprays

関連する問題