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

发布于 2024-12-10 23:11:19 字数 105 浏览 0 评论 0原文

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

所以请明确一点,我将从一个 100 行的矩阵开始,我可以选择其中 5 行并创建一个新矩阵。我希望可以选择在更换或不更换的情况下执行此操作。

How do I select a sample of rows at random with repetition from a matrix in R?

So do be clear, I would start with a matrix of, for example, 100 rows and I would be able to select 5 of those rows and make a new matrix. I would want the option of doing this either with or without replacement.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

雾里花 2024-12-17 23:11:19

在具有 replace=TRUEreplace=FALSE 的行上使用 sample

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

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

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

应该可以工作。 (如果您首先选择示例:s <- example(...),然后选择子集:newmat <- X[s,],则可能更具可读性)

Use sample on the rows with replace=TRUE or replace=FALSE.

If X is your original matrix then

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

or

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

should work. (It may be more readable if you choose the sample first: s <- sample(...) and then subset: newmat <- X[s,])

魂牵梦绕锁你心扉 2024-12-17 23:11:19

使用 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

use the sample function:

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

With replacement:

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

Wihtout replacement:

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
夜还是长夜 2024-12-17 23:11:19

这似乎对数据框更有效:

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

This seems to work better with data frames:

sample_df<-x[sample.int(nrow(x),size=100,replace=TRUE),]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文