2016-08-04 9 views
1

Ich mag Vektoren sortieren, wieSortieren Vektor mit Charakter und Anzahl in R

m = c (1, "< 4" , 5,7", < 12" , 15,18,“< 21" , "< 25", 27) n = c (2 "4" <, 8,17,20,25,34," < 35" , 40,43)

von nur Zahlen bestellt werden

Ausgabe wie (1,2, "< 4", "< 4", 5,7,8, ..., < 35,40,43)

Ich habe versucht, mixedsort in gtools Bibliothek, aber es funktioniert nicht.

Und, gibt es irgendeine Funktion, die ich markiere, aus welchem ​​Vektor das Element kommt?

beispielsweise 0 für Zahlen von Vektor-m und 1 für n-Vektor

und erhalten eine Ausgabe wie (0,1,0,1,0,0,1, ..., 1,1,1

)

Vielen

Antwort

0

Wir die names von ‚m‘ gesetzt und ‚n‘ mit ‚0‘ und ‚1‘, verketten, um es zu einem einzigen vector und order durch den numerischen Teil in dem neuen Vektor Extrahieren (Verwenden Sie gsub) konvertieren zu numeric, order es und verwenden Sie diesen Index, um die "n1" zu bestellen.

n1 <- c(setNames(m, rep(0, length(m))),setNames(n, rep(1, length(n)))) 
r1 <- n1[order(as.numeric(gsub("\\D+", "", n1)))] 

as.vector(r1) 
#[1] "1" "2" "<4" "<4" "5" "7" "8" "<12" "15" "17" "18" "20" 
#[13] "<21" "<25" "25" "27" "34" "<35" "40" "43" 

as.integer(names(r1)) 
#[1] 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1