2010年10月16日土曜日

Rでランダム関数を利用して列を並び替える。

参考までに。
Rでは行列の扱いが容易く、ランダム関数(PC内部の状況を利用しているらしい)
を利用して例えば列の入れ替えもすることができる。

> pi <- c(0.25,0.25,0.25,0.25) #確率
> x <- c(1,2,3,4) #要素
> sample(x,4,replace=FALSE,pi)#ランダムに並べ替え
[1] 4 2 1 3
> sample(x,4,replace=FALSE,pi)
[1] 3 2 1 4
> sample(x,4,replace=FALSE,pi)
[1] 1 2 4 3
> b <- matrix(1:12,nc=4, b=T)#行列作成
> b
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12

> b[,order(sample(x,4,replace=FALSE,pi))]#列ごとにランダム並べ替え
[,1] [,2] [,3] [,4]
[1,] 4 2 1 3
[2,] 8 6 5 7
[3,] 12 10 9 11
> b[,order(sample(x,4,replace=FALSE,pi))]
[,1] [,2] [,3] [,4]
[1,] 2 4 1 3
[2,] 6 8 5 7
[3,] 10 12 9 11
> b[,order(sample(x,4,replace=FALSE,pi))]
[,1] [,2] [,3] [,4]
[1,] 3 2 1 4
[2,] 7 6 5 8
[3,] 11 10 9 12

0 件のコメント:

コメントを投稿