【发布时间】:2011-12-10 00:56:28
【问题描述】:
如何从 R 中的矩阵中随机选择重复的行样本?
所以请明确一点,我将从一个矩阵开始,例如 100 行,然后我可以选择其中的 5 行并创建一个新矩阵。我希望可以选择更换或不更换。
【问题讨论】:
如何从 R 中的矩阵中随机选择重复的行样本?
所以请明确一点,我将从一个矩阵开始,例如 100 行,然后我可以选择其中的 5 行并创建一个新矩阵。我希望可以选择更换或不更换。
【问题讨论】:
在带有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,],则可能更具可读性)
【讨论】:
使用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
【讨论】:
这似乎更适用于数据框:
sample_df<-x[sample.int(nrow(x),size=100,replace=TRUE),]
【讨论】: