将向量元素重新排序为 R 中的第二个

问题描述 投票:0回答:1

假设我们有一些二元素字符串向量,如下所示

A, B, C, ...
。我们只知道保存为对象的元素之一
second

有没有办法让

second
始终是
A, B, C, ...
中的第二个元素?

A = c("time","prof") # --> must become `c("prof", "time")`

B = c("prof", "time") # --> remains Unchanged

C = c("time","ziba") # --> must become `c("ziba", "time")`

second = "time"
r string function vector tidyverse
1个回答
1
投票

您可以创建一个辅助函数来将特定值移动到向量的末尾

move_last <- function(x, v) {
  c(setdiff(x, v), intersect(x,v))
}

这适用于给定的向量

move_last(A, second)
# [1] "prof" "time"
move_last(B, second)
# [1] "prof" "time"
move_last(C, second)
# [1] "ziba" "time"
move_last(c("apple", "banana"), second)
# [1] "apple"  "banana"
© www.soinside.com 2019 - 2024. All rights reserved.