次の事前ソートベクトルx
を考えてみましょう。ベクトルの重複セクションの順序を逆にする
x <- c(1, 2, 2, 2, 3, 5, 7, 7, 7, 8)
order()
は、ベクターの順序を示す。
(o <- order(x))
# [1] 1 2 3 4 5 6 7 8 9 10
は今、私はそれらがx
に繰り返される値であるためo
のちょうど2 3 4
と7 8 9
セクションを逆にするという意味、x
の唯一の重複/繰り返される値の順序を逆にするとします。その後、所望の結果が
[1] 1 4 3 2 5 6 9 8 7 10
それを行うための最善の方法は何でしょうか?今すぐ私は以下を持っています
w <- which(duplicated(x) | duplicated(x, fromLast = TRUE))
o[w] <- rev(o[w])
しかし、ここでは正しい答えはありません。
o
# [1] 1 9 8 7 5 6 4 3 2 10
PS - 重複する列名の列の順序を逆にするために使用しています。 data.table v1.9.6
使用
は常にで始まるように注文するか、ソリューションが順不同 'x'sのために一般化しなければならないと仮定X 'のベクトル'ですか?例えば、 'x < - c(1,3,5,2,7,2,7,2,7,8)'の結果は何ですか? – aashanand
誰のゴルフ? 'rev(order(-x))' – rawr