R根据条件订购一组名称

时间:2015-10-28 14:17:35

标签: r

我正在尝试将组名称组合在一起,同时让其他名称的位置取决于上面提到的顺序。

假设我有以下名字

 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)

从这一点来说,我有一个问题:

  • 你有更好的方法吗?我没有测试过上面的功能,所以我确定有些情况需要添加,还有一些调整要做。

1 个答案:

答案 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的功能没有太大的不同。