2012-01-31 60 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