我正在尝试将组名称组合在一起,同时让其他名称的位置取决于上面提到的顺序。
假设我有以下名字
a <- c("zz", "CountryA", "CountryC", "xy", "aa","CountryB")
我希望一起订购国家,以提供以下输出。
c("zz", "CountryA", "CountryB", "CountryC", "xy", "aa")
我从以下函数得到了上述结果。
orderGroup <- function(regex,char) {
### purpose
## order by group leaving the rest unchanged
group <- grep(regex,char,value=TRUE)
orderGroup <- group[order(group)]
indexGroup <- grep(regex,char)
indexNotInGroup <- grep(paste0("^[^",regex,"]"),char)
c(char[indexNotInGroup[indexNotInGroup<min(indexGroup)]],
orderGroup,char[indexNotInGroup[indexNotInGroup>min(orderc)]])
}
用法:
orderGroup("Country",a)
从这一点来说,我有一个问题:
答案 0 :(得分:2)
这似乎有效:
patt = "^Country"
cs = grep(patt, a)
append(a[-cs], sort(a[cs]), after = cs[1]-1)
# "zz" "CountryA" "CountryB" "CountryC" "xy" "aa"
但是,它与OP的功能没有太大的不同。