7

実験のために 34 人の被験者からランダムなペアを生成しようとしています。被験者には ID 番号 1 ~ 34 が割り当てられます。乱数 (1-34) を生成するために、次のコードを使用しました。

  ### Getting a vector of random ordered numbers 1-34###
  pairs<-sample(1:34,34,replace=F)
  pairs
  [1] 16 22  8 13  4 25 18 12 17  5  6 31 29 27 30 23  2 14  9 24 34 21 11  
    3  1 28 33 20 32 26 19 10 15  7

私がやりたいのは、このランダムな数字の順序を取り、ベクトルの他のすべての要素を列に分割して、次の順序付けられたペアを取得することです。

   partner1     partner2
    16           22
     8           13
     .            .
     .            .
    15            7

ベクトルから順序付きペアに移行する方法についての考えやアイデアはありますか? どんな助けや洞察も大歓迎です。

-トーマス

4

4 に答える 4

14

それは次のように簡単かもしれません

 newpairs <- matrix(pairs, ncol=2, byrow=TRUE)

そして、各行はペアを提供します。

編集正しい使い方matrix()

于 2010-07-09T11:38:20.123 に答える
0

上記のDirkのコードを1行に要約することもできます

pairs <- matrix(sample(1:34,34,replace=F), ncol=2)
于 2010-07-09T15:33:15.283 に答える
0

ベクトルを行列に分割し、結果の行と列を反復処理します。行列は 2 次元配列のように表されます。したがって、この行列で、ベクトルの奇数位置にある行要素の最初の要素と、行の 2 番目の要素 (ベクトルの偶数位置) に設定する必要があります。var ベクトル = 新しいバイト [34]; //埋める

        var matrix = new byte[2,17]; //the code below will fill this matrix, then you need only to print it
        for (var i=0; i < vector.Length; i++)
        {
            var indexPosition = i + 1;
            if (indexPosition % 2 != 0) //odd number
            {
                matrix[0, i/2] = vector[i];
            }
            else //even number
            {
                matrix[1, i / 2] = vector[i];
            }
        }

上記のコードはテストされていませんが、アルゴリズムとアイデアは明らかです。

于 2010-07-09T11:45:35.410 に答える
0

または、データフレームが必要な場合:

df = data.frame(partner1=pairs[1:(length(pairs)/2)],
                partner2=pairs[((length(pairs)/2)+1):length(pairs)])
于 2010-07-09T14:47:29.567 に答える