R list.files()中的自然排序顺序(人类排序顺序)

Iai*_*n S 4 r natural-sort

是否有一种简单的方法按自然顺序(也称为人类顺序)对文件进行排序,即file9.csv出现在file10.csv之前?list.files()似乎没有排序顺序的选项.

其他语言有很多实现(例如这里),Rosetta Code只有C,Perl,Python等解决方案.

mbq*_*mbq 7

"人类排序"是一种疯狂的幻觉,仅在假设的人工智能系统上可用,但只有具备适当的背景知识.

为此,您应该使用一些快速正则表达式从文件名中提取元数据并使用它们来订购文件:

files<-c("file9.txt","file10.txt");
as.numeric(gsub('^file([0123456789]*)\\.txt$','\\1',files))->fileNum;
files[order(fileNum)]
Run Code Online (Sandbox Code Playgroud)