R中矢量元素的选择性(或部分)排序

R中矢量元素的选择性(或部分)排序,r,R,我有一个名为myvec的向量,只需将“C”和“D”带到前面: myvec <- c("B","C","D","A") myvec[order(!myvec %in% c('C', 'D'))] #[1] "C" "D" "B" "A" myvec您可以使用factor sort(factor(myvec <- sample(myvec, 20, T),c('C', 'D', 'B', 'A'))) [1] C C C D D D D D D B B B B B B A A A

我有一个名为
myvec的向量,只需将
“C”
“D”
带到前面:

myvec <- c("B","C","D","A")

myvec[order(!myvec %in% c('C', 'D'))]
#[1] "C" "D" "B" "A"

myvec您可以使用
factor

 sort(factor(myvec <- sample(myvec, 20, T),c('C', 'D', 'B', 'A')))
 [1] C C C D D D D D D B B B B B B A A A A A
Levels: C D B A
sort(factor)(myvec我通常使用setdiff()从向量中删除元素

myvec <- c("B","C","D","A")
put_first <- c("C", "D")
new_vec <- c(put_first, setdiff(myvec, put_first))
new_vec
# [1] "C" "D" "B" "A"

myvec为什么有这么多重复?
C“C”C“C”D“D”D“D”D“D”D“B”B“A”A“A”A“A”"A
?重复只会在定义不同的
myvec
时发生。我只是举了另一个例子说明为什么可以使用这种方法,因为在你的例子中确实没有必要。你可以只键入
y。另外,我不想键入向量的整个顺序。
order.vec我只想键入两个元素 “C”、“D”
我想提出来。有没有一个有效的方法?结果应该是
C,D,B,A
,但我有数百万个元素,只想改变50多个元素的位置。重新键入和重新排序所有元素很麻烦。我想最好的方法是使用
grepl
。是的,但是原始的post Did未将其指定为要求。
 sort(factor(myvec <- sample(myvec, 20, T),c('C', 'D', 'B', 'A')))
 [1] C C C D D D D D D B B B B B B A A A A A
Levels: C D B A
myvec <- c("B","C","D","A")
put_first <- c("C", "D")
new_vec <- c(put_first, setdiff(myvec, put_first))
new_vec
# [1] "C" "D" "B" "A"
myvec <- c("B", "B","C", "C","D", "D", "A", "A")
put_first <- c("C", "D")
new_vec <- c(myvec[myvec %in% put_first], myvec[!myvec %in% put_first])
new_vec
# [1] "C" "C" "D" "D" "B" "B" "A" "A"