我必须得到一个向量的顺序来排序其他向量。关键是我不希望我的功能稳定。事实上,我想随机排列相等的值。知道如何在有限时间内在R中做到这一点? :D
感谢您的帮助。
答案 0 :(得分:0)
尝试fct_reorder
包中的forcats
来按顺序排列一个因素。如果您还要引入随机性,请尝试使用fct_reorder2
.y = runif(length(your_vector))
(我显然今天在奇怪的方向思考 - fct_reorder
会重新排列一个因素的级别。如果这就是你所追求的,这可能会有所帮助。否则,order
是更好的方法。 )
答案 1 :(得分:0)
您可以使用order
在基础R中执行此操作。 order将采用多个变量进行排序。如果你让第二个变成一个随机变量,它会随机化关系。以下是使用内置光圈数据的示例。变量Sepal.Length
具有第二个最低值的几个关系。以下是一些:
iris$Sepal.Length[c(9,39,43)]
[1] 4.4 4.4 4.4
现在让我们对该变量进行排序(稳定排序),然后使用随机二级排序进行排序。
order(iris$Sepal.Length)
[1] 14 9 39 43 42 4 7 23 48 3 30 12 13 25 31 46 2 10 35
[20] 38 58 107 5 8 26 27 36 41 44 50 61 94 1 18 20 22 24 40
[39] 45 47 99 28 29 33 60 49 6 11 17 21 32 85 34 37 54 81 82
[58] 90 91 65 67 70 89 95 122 16 19 56 80 96 97 100 114 15 68 83
[77] 93 102 115 143 62 71 150 63 79 84 86 120 139 64 72 74 92 128 135
[96] 69 98 127 149 57 73 88 101 104 124 134 137 147 52 75 112 116 129 133
[115] 138 55 105 111 117 148 59 76 66 78 87 109 125 141 145 146 77 113 144
[134] 53 121 140 142 51 103 110 126 130 108 131 106 118 119 123 136 132
order(iris$Sepal.Length, sample(150,150))
[1] 14 43 39 9 42 48 7 4 23 3 30 25 31 46 13 12 35 38 107
[20] 10 58 2 8 41 27 61 94 5 36 44 50 26 18 22 99 40 20 47
[39] 24 45 1 33 60 29 28 49 85 11 6 32 21 17 90 81 91 54 34
[58] 37 82 67 122 95 65 70 89 100 96 56 114 80 16 19 97 93 15 68
[77] 143 102 83 115 150 62 71 120 79 84 63 139 86 72 135 74 64 92 128
[96] 149 69 98 127 88 134 101 57 137 73 104 147 124 138 112 129 116 75 52
[115] 133 148 55 111 105 117 59 76 87 66 78 146 141 109 125 145 144 113 77
[134] 140 53 121 142 51 103 126 130 110 108 131 106 136 119 118 123 132
没有随机二级排序,位置2,3和4按顺序排列(稳定)。通过随机的二级排序,它们是混乱的。