[英]Sort list of dates and sort other list based on this sorting order in R
[英]Natural sort order (human sort order) in R list.files()
是否有一種簡單的方法按自然順序(也稱為人類順序)對文件進行排序,即file9.csv出現在file10.csv之前? list.files()似乎沒有排序順序的選項。
其他語言有很多實現(例如這里 ), Rosetta Code只有C,Perl,Python等解決方案。
“人類排序”是一種瘋狂的幻覺,僅在假設的人工智能系統上可用,但只有具備適當的背景知識。
為此,您應該使用一些快速正則表達式從文件名中提取元數據並使用它們來訂購文件:
files<-c("file9.txt","file10.txt");
as.numeric(gsub('^file([0123456789]*)\\.txt$','\\1',files))->fileNum;
files[order(fileNum)]
您可以嘗試將其命名為file09.csv ...
filenames <- paste0("file", 0:20, ".txt")
new_filenames <- sub("file([[:digit:]])\\.txt", "file0\\1\\.txt", filenames)
is_different <- new_filenames != filenames
file.rename(filenames[is_different], new_filenames[is_different])
您可以使用mixedsort()
或mixedorder()
從包裝gtools
,正如指出的@baptiste中的注釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.