web-dev-qa-db-ja.com

Rの行列から繰り返しのある行のサンプルをランダムに選択するにはどうすればよいですか?

Rの行列から繰り返しのある行のサンプルをランダムに選択するにはどうすればよいですか?

明確にしてください。たとえば、100行の行列から始めて、それらの行のうち5行を選択して新しい行列を作成することができます。交換の有無にかかわらず、これを行うオプションが欲しいです。

19
Henry B.

_replace=TRUE_または_replace=FALSE_を含む行でsampleを使用します。

Xが元の行列の場合

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

または

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

うまくいくはずです。 (最初にサンプルを選択した方が読みやすい場合があります:s <- sample(...)次にサブセット:_newmat <- X[s,]_)

36
Ben Bolker

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
9
Andrie

これはデータフレームでよりうまく機能するようです:

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