25

次のような文字ベクトルがあります

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

そして、次のような特定の順序

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

. 次のベクトルを取得するために、2 番目のベクトルの順序に従って最初のベクトルを並べ替えたいと思いますc("red","red","white","white","blue","blue", "green")。最善の解決策は何ですか?

4

2 に答える 2

42
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"
于 2013-06-10T19:13:49.347 に答える
10

変数を適切な順序でレベルを持つ因子にしますsort()

 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

x2 <- as.character(sort(f1))結果を文字ベクトルとして本当に必要な場合に使用できます...

于 2013-06-10T19:12:53.310 に答える