【发布时间】:2015-11-20 01:57:47
【问题描述】:
我目前有一个 20 x 3 的矩阵,我试图从中抽取每行一个值。但是,约束是每列不能有超过 5 个选定值。这是我的矩阵示例:
> matrix(1:80, 20, 4, byrow=T)
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
[5,] 17 18 19 20
[6,] 21 22 23 24
[7,] 25 26 27 28
[8,] 29 30 31 32
[9,] 33 34 35 36
[10,] 37 38 39 40
[11,] 41 42 43 44
[12,] 45 46 47 48
[13,] 49 50 51 52
[14,] 53 54 55 56
[15,] 57 58 59 60
[16,] 61 62 63 64
[17,] 65 66 67 68
[18,] 69 70 71 72
[19,] 73 74 75 76
[20,] 77 78 79 80
据此,我想获得一个矩阵,我在其中每行随机采样一个条目,但约束条件是每列不得超过 5 个条目。我想得到的一个样本是:
> MM
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 0 7 0
[3,] 0 0 11 0
[4,] 0 0 15 0
[5,] 0 18 0 0
[6,] 21 0 0 0
[7,] 0 0 27 0
[8,] 0 0 0 32
[9,] 0 0 35 0
[10,] 0 0 0 40
[11,] 41 0 0 0
[12,] 45 0 0 0
[13,] 49 0 0 0
[14,] 0 54 0 0
[15,] 0 0 0 60
[16,] 0 0 0 64
[17,] 0 66 0 0
[18,] 0 70 0 0
[19,] 0 74 0 0
[20,] 0 0 0 80
非零值是我选择的值。我希望以这种最终格式获得它。有没有人知道如何做到这一点,以便我尽可能独立地采样?谢谢!
【问题讨论】:
-
如果您的任何原始值为零,这将很快变得混乱。也许你应该用
NA填充未选择的值。
标签: r