2013-06-10 18 views
7

BenBelirli bir sıraya göre karakter vektörü nasıl sıralanır?

gibi
c("white","white","blue","green","red","blue","red") 

ve

c("red","white","blue","green") 

gibidir belirli bir sıra görünen bir karakter vektör var. Aşağıdaki vektörün elde edilmesi için ilk vektörün sırasına göre ikinci vektörü sıralamak istiyorum: c("red","red","white","white","blue","blue", "green"). En iyi çözüm ne olurdu?

cevap

14
x <- c("white","white","blue","green","red","blue","red") 
y <- c("red","white","blue","green") 
x[order(match(x, y))] 
# [1] "red" "red" "white" "white" "blue" "blue" "green" 
2

uygun sırayla düzeyleri ve sort() ile bir faktör haline Değişkeninizi yapın:

x1 <- c("white","white","blue","green","red","blue","red") 
ord <- c("red","white","blue","green") 
f1 <- factor(x1,levels=ord) 
sort(f1) 
## [1] red red white white blue blue green 
## Levels: red white blue green 

Eğer gerçekten bir karakter vektörü olarak sonuçlarını isterseniz x2 <- as.character(sort(f1)) kullanabilirsiniz ...

İlgili konular