按括号中的数字对字符向量进行排序

时间:2017-08-11 11:39:00

标签: r string sorting

必须对这些chr进行排序:

files <- c("file (1).csv", "file (2).csv", "file.csv")

成:

chr [1:3] "file.csv" "file (1).csv" "file (2).csv"

到目前为止,我找到了gtools包及其mixedsortmixedorder函数。但他们导致:

> library("gtools")
> mixedsort(files)    
[1] "file (1).csv" "file (2).csv" "file.csv"

有什么想法解决我的问题吗?

1 个答案:

答案 0 :(得分:4)

我们可以使用sub

i1 <- as.numeric(gsub("\\D+", "", files))
files[order(!is.na(i1), i1)]
#[1] "file.csv"     "file (1).csv" "file (2).csv"