2016-04-04 9 views
0

私はこの質問の答えを完全に行いましたが、何も見つかりませんでした。多くのネストされた "for"ループを使用せずにすべてのペア置換を列挙します

サンプルサイズが4のペア観測値のサンプルが2つあるとします。私の目標は、サンプル手段を比較するための正確な置換セットを実行し、その手順を実行するために可能なすべてのペア置換私は16の異なる並べ替えを生成する必要があります(最初のペアは2つ、2つ目は2つ...など)。

私のサンプルがある場合は、次のとおりです。

#samples 
x <- rnorm(4,0,1) 
y <- rnorm(4,5,1) 

#statistic over the original samples 
dif0 <- mean(x) - mean(y) 

次のように私は、ループ「のための」入れ子に4を使用して、すべての可能な順列を生成することができます。

d1 < c() 
d2 <- c() 
samp_ab <- data.frame("x"=x,"y"=y) 
ind <- 1:2 
for (i1 in 1:2) 
{ 
    d1[1] <- samp_ab[1,ind[i1]] 
    d2[1] <- samp_ab[1,ind[-i1]] 
    for (i2 in 1:2) { 
     d1[2] <- samp_ab[2,ind[i2]] 
     d2[2] <- samp_ab[2,ind[-i2]] 
     for (i3 in 1:2) { 
      d1[3] <- samp_ab[3,ind[i3]] 
      d2[3] <- samp_ab[3,ind[-i3]] 
      for (i4 in 1:2) { #loop4 
       d1[4] <- samp_ab[4,ind[i4]] 
       d2[4] <- samp_ab[4,ind[-i4]] 

       #compute the statistic 
       k = k + 1 #counter 
       S[k] <- mean(d1) - mean(d2) 
      } 
     } 
    } 
} 

このため任意の可能性がありますコードを簡素化するには?ネストされたループを「書き込む」関数を考えて実行しましたが、どうすればいいのかわかりません。私は多くのネストされたループを書き込まずにペアのサンプル(または3つの要素を組み合わせるための)のための一般的な手順を取得したいと思います。例えば、n = 10で10回ループしなければならなかった... 1024(2^10)個の置換を作成するだけです。

事前に感謝します。

+1

あなたは、例えば、入力および関連出力を提供することはできますか? –

+2

あなたはどんなプログラミング言語であるか教えていただけますか? – arkascha

+0

@arkascha言語はRです – RHA

答えて

関連する問題