【发布时间】:2019-06-02 18:48:55
【问题描述】:
我有一个矩阵,有 30 行和 4 列,每行填充了从 0 到小于/等于 100 的随机数。
最后(第四)列包含 0 到 100 范围内的所有最大数字(即 99、98 等)。我想让数字真正分布在矩阵中,也就是说,一些最大的数字在第一列或第二列或第三列,而不仅仅是在第四列。
在获得其他 Stackexchange 贡献者的帮助后,这是我一直在使用的函数:
y <- t(replicate(30,{x <- runif(3); y <- c(x, 100 - sum(x)); sort(y/sum(y) * 100)}))
这给了我以下矩阵:
[,1] [,2] [,3] [,4]
[1,] 0.106034080 0.8035997 0.9161168 98.17425
[2,] 0.013372771 0.4416418 0.5053132 99.03967
[3,] 0.477705091 0.7248394 0.7254909 98.07196
[4,] 0.080764396 0.3859276 0.3968179 99.13649
[5,] 0.699455094 0.7579722 0.7875055 97.75507
[6,] 0.372264415 0.3772728 0.6589921 98.59147
[7,] 0.114169686 0.2029357 0.4566677 99.22623
[8,] 0.478831699 0.7960539 0.9740272 97.75109
[9,] 0.032629269 0.2068012 0.6521174 99.10845
[10,] 0.349337576 0.3886265 0.9551120 98.30692
[11,] 0.437791360 0.4712769 0.5487138 98.54222
[12,] 0.137317329 0.6110274 0.9769346 98.27472
[13,] 0.314229467 0.4457654 0.8379763 98.40203
[14,] 0.038342032 0.3210214 0.4811107 99.15953
[15,] 0.063934371 0.5945270 0.7108552 98.63068
[16,] 0.176338974 0.3944489 0.6910675 98.73814
[17,] 0.174552999 0.6164661 0.8115936 98.39739
[18,] 0.358101562 0.6727262 0.8580072 98.11117
[19,] 0.097051604 0.1425019 0.8777943 98.88265
[20,] 0.287638218 0.5643593 0.7917288 98.35627
[21,] 0.060074348 0.1993140 0.8502848 98.89033
[22,] 0.136792340 0.1833376 0.2811030 99.39877
[23,] 0.274043764 0.5373264 0.7441432 98.44449
[24,] 0.040409521 0.5162444 0.5339423 98.90940
[25,] 0.481989448 0.5592237 0.9305969 98.02819
[26,] 0.008124932 0.6241172 0.8474349 98.52032
[27,] 0.134700798 0.3691278 0.4193065 99.07686
[28,] 0.228018480 0.5125451 0.9561445 98.30329
[29,] 0.155826657 0.6548732 0.7902131 98.39909
[30,] 0.080001684 0.4109359 0.7645531 98.74451
有没有办法让这个矩阵中的数字真正分散,而不是所有最大的数字都限制在第四列?
【问题讨论】:
标签: r