找到使总和最小的矩阵行和列的组合

时间:2020-06-24 04:29:01

标签: r

我有一个矩阵,可以说:

set.seed(1234)
X <- matrix(rnorm(210, mean=2000, sd=500), ncol=30)
           [,1]     [,2]     [,3]     [,4]     [,5]      [,6]     [,7]     [,8]     [,9]
[1,] 1396.4671 1726.684 2479.747 1754.657 1992.431 1416.1904 1572.318 1751.575 2823.909
[2,] 2138.7146 1717.774 1944.857 1779.726 1532.026  909.9802 1859.688 1096.984 1613.323
[3,] 2542.2206 1554.981 1744.495 2229.795 2551.149 1329.5034 1502.830 1708.962 2802.955
[4,]  827.1511 1761.404 1544.402 1653.140 1762.203 1852.8531 1515.743 1445.555 1421.096
[5,] 2214.5623 1500.807 1581.414 1275.898 1645.280 1767.0512 1446.341 1492.519 2328.294
[6,] 2253.0279 1611.873 3207.918 2287.378 1749.371 2724.7481 1374.007 1918.845 3274.496
[7,] 1712.6300 2032.229 2067.044 1488.172 1185.453 1465.6786 1738.086 2281.528 1982.620
        [,10]    [,11]    [,12]    [,13]    [,14]    [,15]    [,16]    [,17]    [,18]
[1,] 1665.183 2003.446 1638.209 2425.116 2127.598 2486.458 2083.495 1445.116 1986.862
[2,] 1996.198 1772.266 2129.131 2348.804 2852.982 3060.559 1551.868 2424.637 1904.304
[3,] 2888.542 1816.738 1841.470 2274.999 2500.757 2207.262 2084.093 2011.181 1609.047
[4,] 1430.696 2324.143 1911.105 1798.634 1752.208 1762.641 2177.484 2415.570 3029.081
[5,] 2683.914 3035.135 1915.003 1904.203 2177.775 2032.997 1973.947 1377.856 2375.251
[6,] 2664.782 1923.301 1313.849 1402.736 1432.696 1748.761 1902.033 2084.513 2912.104
[7,] 2168.236 1304.650 1913.106 1973.421 2439.102 1587.001 1675.465 2336.583 2040.030
        [,19]    [,20]    [,21]    [,22]    [,23]    [,24]    [,25]     [,26]    [,27]
[1,] 1684.295 2334.357 1832.982 2137.947 2060.880 1869.680 1839.580 1581.2088 2488.016
[2,] 1243.356 1174.950 2697.574 2253.136 2681.065 1792.790 2735.503 1438.1186 2206.934
[3,] 1681.950 1817.074 2318.337 2173.776 1882.689 1908.475 2852.165 3521.8829 2456.161
[4,] 2113.151 1841.941 1945.784 1811.381 1473.309 2203.528 2021.622 2117.5107 2991.866
[5,] 2506.845 1025.877 2256.881 2048.810 1565.108 2312.317 1833.671 1983.3707 2584.554
[6,] 2126.375 2460.029 2199.636 2819.372 1804.936 2839.103 1088.882  633.8902 1745.631
[7,] 1414.026 1688.564 2831.428 1562.204 1576.325 1965.653 2705.631 1950.1047 2352.090
         [,28]     [,29]    [,30]
[1,] 1900.7919 2310.1051 2350.367
[2,] 1730.9646 1517.0484 2155.841
[3,]  572.1207 2081.3274 2380.231
[4,] 1605.1766  960.8812 2921.232
[5,] 2243.9073 2242.6134 2556.181
[6,] 3084.0163 2348.3844 2016.332
[7,] 2250.3473 2092.7570 1442.776

我需要按列选择一个值,以最大程度地减少选举出的数字的总和,因此请为每一列选择同一行。即:如果第一列的最小值在第4行中,而第三列的最小值也在第4行中,则只有一列可以选择第四行。

我想是某种优化。

如何在R中有效地做到这一点?

0 个答案:

没有答案