如何在R中从矩阵中抽取随机样本?


要在R中从矩阵中抽取随机样本,我们可以简单地使用sample函数,如果样本大小大于矩阵中的元素数量,则将使用replace=TRUE参数。

例如,如果我们有一个名为M的矩阵,包含100个元素,我们想从中抽取200个元素,那么我们可以使用以下命令:

sample(M,200,replace=TRUE)

示例1

以下代码片段创建一个矩阵:

M1<-matrix(rpois(40,2),ncol=2)
M1

创建的矩阵如下:

    [,1] [,2]
[1,]  4   1
[2,]  2   2
[3,]  1   1
[4,]  1   1
[5,]  3   3
[6,]  3   3
[7,]  0   1
[8,]  6   2
[9,]  2   3
[10,] 3   0
[11,] 2   1
[12,] 2   0
[13,] 2   1
[14,] 3   2
[15,] 4   1
[16,] 2   5
[17,] 2   0
[18,] 5   1
[19,] 1   2
[20,] 2   1

要从矩阵M1中抽取20个元素,请将以下代码添加到上述代码片段:

M1<-matrix(rpois(40,2),ncol=2)
sample(M1,20)

输出

如果您将以上所有代码片段作为一个程序执行,则会生成以下输出:

[1] 1 6 1 3 5 2 2 3 0 3 3 4 1 2 3 2 2 1 5 2

示例2

以下代码片段创建一个矩阵:

M2<-matrix(rnorm(40),ncol=2)
M2

创建的矩阵如下:

        [,1]          [,2]
[1,]   0.48397719  -0.3434391
[2,]  -1.13421796  -0.3913274
[3,]   1.05965857  -1.0989064
[4,]   1.23304607  -1.3435612
[5,]   1.77637786   0.7310268
[6,]   0.41760502   1.3260546
[7,]  -0.08124738   0.8677471
[8,]  -0.15993339   0.1359703
[9,]  -0.82723524  -0.1186969
[10,]  1.41121197   0.0248495
[11,]  0.48756826   1.3339764
[12,] -0.02805691  -1.2450467
[13,]  0.55314428   0.8207469
[14,] -0.47900431   0.3231949
[15,] -0.02465099   0.4216422
[16,] -0.81648466   0.3326057
[17,] -0.97571912  -0.7905656
[18,]  0.51536039  -0.4992937
[19,] -0.70616764  -1.0087116
[20,]  0.80158965  -1.0430299

要从矩阵M2中抽取50个元素,请将以下代码添加到上述代码片段:

M2<-matrix(rnorm(40),ncol=2)
sample(M2,50,replace=TRUE)

输出

如果您将以上所有代码片段作为一个程序执行,则会生成以下输出:

[1] -1.34356116 1.23304607 1.05965857 -0.82723524 -0.11869686 -0.11869686
[7] 0.33260571 -0.82723524 0.13597027 -1.13421796 1.33397641 1.32605457
[13] 0.73102677 1.77637786 0.42164215 1.77637786 0.42164215 -0.82723524
[19] -0.47900431 0.51536039 -1.09890635 -0.39132740 -1.34356116 1.32605457
[25] 1.77637786 -1.24504668 0.02484950 -0.82723524 0.73102677 -0.08124738
[31] 0.55314428 -0.97571912 -0.97571912 0.48397719 -0.02805691 1.32605457
[37] 0.82074690 -0.02465099 -1.13421796 0.55314428 0.55314428 1.41121197
[43] 0.42164215 -1.24504668 -1.00871161 0.82074690 -0.79056563 0.48756826
[49] 0.86774712 1.33397641

示例3

以下代码片段创建一个矩阵:

M3<-matrix(rpois(40,10),ncol=2)
M3

创建的矩阵如下:

     [,1] [,2]
[1,]   7   9
[2,]  14   8
[3,]  11   5
[4,]  11   8
[5,]   9   8
[6,]   6   9
[7,]  12  12
[8,]  17   5
[9,]  14   8
[10,] 13  11
[11,] 11   5
[12,] 11  13
[13,] 14  10
[14,] 12  15
[15,] 11  13
[16,] 11   7
[17,] 12   8
[18,] 11  11
[19,] 12  10
[20,]  6   9

要从矩阵M3中抽取50个元素,请将以下代码添加到上述代码片段:

M3<-matrix(rpois(40,10),ncol=2)
sample(M3,50,replace=TRUE)

输出

如果您将以上所有代码片段作为一个程序执行,则会生成以下输出:

[1] 14 8 15 17 9 9 8 12 11 9 6 10 14 10 6 8 9 9 14 13 11 5 8 11 11
[26] 12 9 9 11 11 11 5 11 11 6 13 13 6 12 11 17 12 11 11 12 10 11 11 10 12

更新于:2021年11月12日

2000+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.