2012-01-31 138 views
2

我有一個矩陣A,此時正確的做法,我想隨機地重新階矩陣A的行生成另一個新的矩陣。如何在R中做到這一點?的隨機重新排序的矩陣R中

+0

我認爲通過「重新排序」你的意思是「A」的行,而「A」確實是一個矩陣?最後一點並不重要,我的回答將用於數據幀工作太,但只是要清楚你有什麼。 – 2012-01-31 14:57:12

+0

加文,感謝您的回答。更通用的情況是,是否有辦法隨機重新排序輸入數據文件的行? – 2012-01-31 16:36:16

+0

是 - 這是一個我會告訴你下面。它適用於數據幀,這將是如何將大部分數據讀入格式。 – 2012-01-31 16:48:35

回答

10

sample()使用,以產生行指數的(僞)隨機順序重新排序和使用[矩陣。

## create a matrix A for illustration 
A <- matrix(1:25, ncol = 5) 

給予

> A 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 1 6 11 16 21 
[2,] 2 7 12 17 22 
[3,] 3 8 13 18 23 
[4,] 4 9 14 19 24 
[5,] 5 10 15 20 25 

接下來,生成行

## generate a random ordering 
set.seed(1) ## make reproducible here, but not if generating many random samples 
rand <- sample(nrow(A)) 
rand 

這給出了一個隨機的順序給出

> rand 
[1] 2 5 4 3 1 

現在用它來重新排序A

> A 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 1 6 11 16 21 
[2,] 2 7 12 17 22 
[3,] 3 8 13 18 23 
[4,] 4 9 14 19 24 
[5,] 5 10 15 20 25 
> A[rand, ] 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 2 7 12 17 22 
[2,] 5 10 15 20 25 
[3,] 4 9 14 19 24 
[4,] 3 8 13 18 23 
[5,] 1 6 11 16 21