Betrachten Sie den folgenden vorsortierten Vektor x
.Umkehren der Reihenfolge duplizierter Abschnitte in einem Vektor
x <- c(1, 2, 2, 2, 3, 5, 7, 7, 7, 8)
order()
zeigt uns die Reihenfolge des Vektors.
(o <- order(x))
# [1] 1 2 3 4 5 6 7 8 9 10
Jetzt nehme ich die Reihenfolge der nur den duplizierten/wiederholt Werte von x
umkehren wollen, was bedeutet, ich nur die 2 3 4
und 7 8 9
Abschnitte von o
umkehren wollen, weil diejenigen, die Werte wiederholt in x
sind. Dann würde das gewünschte Ergebnis
[1] 1 4 3 2 5 6 9 8 7 10
sein Was ist der beste Weg, das zu tun? Im Moment habe ich die folgenden
w <- which(duplicated(x) | duplicated(x, fromLast = TRUE))
o[w] <- rev(o[w])
Aber das gibt nicht die richtige Antwort hier.
o
# [1] 1 9 8 7 5 6 4 3 2 10
PS - Ich verwende dies, um die Spaltenreihenfolge der doppelten Spaltennamen umzukehren.
Ist der Vektor 'X' immer davon ausgegangen bestellt werden, mit zu beginnen, oder wäre eine Lösung haben für ungeordnete 'x's zu verallgemeinern? Zum Beispiel, was ist dein Wunschergebnis für 'x <- c (1,3,5,2,7,2,7,2,7,8)'? – aashanand
Runde von Golf jedermann? 'rev (order (-x))' – rawr