如何从R中的矩阵中重复选择行的样本?

时间:2011-10-18 11:47:18

标签: r random

如何从R?

中的矩阵中随机重复选择行样本

所以要清楚,我将从一个矩阵开始,例如,100行,我将能够选择其中的5行并创建一个新的矩阵。无论是否替换,我都希望选择这样做。

3 个答案:

答案 0 :(得分:35)

samplereplace=TRUE

的行使用replace=FALSE

如果X是您的原始矩阵,那么

X[sample(nrow(X),size=5,replace=TRUE),]

X[sample(nrow(X),size=5,replace=FALSE),]

应该有效。 (如果您先选择样本,可能会更具可读性:s <- sample(...)然后是子集:newmat <- X[s,]

答案 1 :(得分:9)

使用sample函数:

x <- matrix(1:1000, nrow=100)

替换:

x[sample(1:100, 5, replace=TRUE), ]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   19  119  219  319  419  519  619  719  819   919
[2,]   51  151  251  351  451  551  651  751  851   951
[3,]   42  142  242  342  442  542  642  742  842   942
[4,]   48  148  248  348  448  548  648  748  848   948
[5,]   73  173  273  373  473  573  673  773  873   973

无需替换:

x[sample(1:100, 5, replace=FALSE), ]
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   64  164  264  364  464  564  664  764  864   964
[2,]   67  167  267  367  467  567  667  767  867   967
[3,]   20  120  220  320  420  520  620  720  820   920
[4,]   17  117  217  317  417  517  617  717  817   917
[5,]    6  106  206  306  406  506  606  706  806   906

答案 2 :(得分:0)

这似乎可以更好地处理数据框:

sample_df<-x[sample.int(nrow(x),size=100,replace=TRUE),]