我想按两个特定部分对文件名进行排序。文件名:
/xxx/abc_000_0222
/xxx/abc_000_0234
/xxx/abc_000_0134
/xxx/abc_002_0321
/xxx/abc_002_0012
/xxx/abc_001_0112
/xxx/abc_001_0341
我希望这样的正确顺序:
/xxx/abc_000_0134
/xxx/abc_000_0222
/xxx/abc_000_0234
/xxx/abc_001_0112
/xxx/abc_001_0341
/xxx/abc_002_0012
/xxx/abc_002_0321
我在mixedsort
库中尝试了gtools
函数,但无法获得正确的顺序:
df_filenames <- mixedsort(filenames)
有任何帮助吗?提前谢谢!
答案 0 :(得分:0)
通过分隔符_
将字符串拆分为df,然后通过第二个/第三个变量获取df的顺序并将其反馈给文件名。
x <- c("/xxx/abc_000_0222",
"/xxx/abc_000_0234",
"/xxx/abc_000_0134",
"/xxx/abc_002_0321",
"/xxx/abc_002_0012",
"/xxx/abc_001_0112",
"/xxx/abc_001_0341")
在您的情况下,x
来自list.files()
:
x <- list.files("path/to/files")
df <- as.data.frame(do.call(rbind,strsplit(x,"_")))
x[with(df, order(V2, V3))]
# /xxx/abc_000_0134
# /xxx/abc_000_0222
# /xxx/abc_000_0234
# /xxx/abc_001_0112
# /xxx/abc_001_0341
# /xxx/abc_002_0012
# /xxx/abc_002_0321
另外,请注意谨慎。我不记得是什么,但gtools
库中有一些东西会导致与常用函数发生冲突,并可能导致意外结果。如果你看到奇怪的东西,请确保它没有附加。