对R中的文件列表进行排序

对R中的文件列表进行排序,r,string,R,String,我正在尝试对文件列表进行排序。使用str_sort获得的顺序与默认顺序相同: list.files('sim') [1] "Intercept_simulation_0_0.037.csv" "Intercept_simulation_0_0.074.csv" [3] "Intercept_simulation_0_0.099.csv" "Intercept_simulation_0_0.csv" [5] "Intercept_sim

我正在尝试对文件列表进行排序。使用str_sort获得的顺序与默认顺序相同:

list.files('sim')
     [1] "Intercept_simulation_0_0.037.csv"    "Intercept_simulation_0_0.074.csv"   
     [3] "Intercept_simulation_0_0.099.csv"    "Intercept_simulation_0_0.csv"       
     [5] "Intercept_simulation_0.02_0.037.csv" "Intercept_simulation_0.02_0.074.csv"
     [7] "Intercept_simulation_0.02_0.099.csv" "Intercept_simulation_0.02_0.csv"    
     [9] "Intercept_simulation_0.04_0.037.csv" "Intercept_simulation_0.04_0.074.csv"
    [11] "Intercept_simulation_0.04_0.099.csv" "Intercept_simulation_0.04_0.csv"    
    [13] "Intercept_simulation_0.06_0.037.csv" "Intercept_simulation_0.06_0.074.csv"
    [15] "Intercept_simulation_0.06_0.099.csv" "Intercept_simulation_0.06_0.csv"    
    [17] "Intercept_simulation_0.08_0.037.csv" "Intercept_simulation_0.08_0.074.csv"
    [19] "Intercept_simulation_0.08_0.099.csv" "Intercept_simulation_0.08_0.csv"  
我想以这样的方式订购*_0_0.csv将在*_0_0.037.csv之前*_0.02_0.csv之前*_0.02_0.037;等
谢谢

您可以从字符串中提取相关部分,然后使用order

其中sub的输出为

在这种情况下,来自gtools的mixedsort直接起作用

gtools::mixedsort(x)
资料

我们可以按订单使用gsub

数据
sub(".*?(\\d.*)\\.csv", "\\1", x)
# [1] "0_0.037"    "0_0.074"    "0_0.099"    "0_0"    "0.02_0.037" "0.02_0.074"    
#     "0.02_0.099" "0.02_0"  "0.04_0.037" "0.04_0.074" "0.04_0.099" "0.04_0"        
#     "0.06_0.037" "0.06_0.074" "0.06_0.099" "0.06_0"  "0.08_0.037" "0.08_0.074" 
#     "0.08_0.099" "0.08_0" 
gtools::mixedsort(x)
x <- c("Intercept_simulation_0_0.037.csv", "Intercept_simulation_0_0.074.csv", 
"Intercept_simulation_0_0.099.csv", "Intercept_simulation_0_0.csv", 
"Intercept_simulation_0.02_0.037.csv", "Intercept_simulation_0.02_0.074.csv", 
"Intercept_simulation_0.02_0.099.csv", "Intercept_simulation_0.02_0.csv", 
"Intercept_simulation_0.04_0.037.csv", "Intercept_simulation_0.04_0.074.csv", 
"Intercept_simulation_0.04_0.099.csv", "Intercept_simulation_0.04_0.csv", 
"Intercept_simulation_0.06_0.037.csv", "Intercept_simulation_0.06_0.074.csv", 
"Intercept_simulation_0.06_0.099.csv", "Intercept_simulation_0.06_0.csv", 
"Intercept_simulation_0.08_0.037.csv", "Intercept_simulation_0.08_0.074.csv", 
"Intercept_simulation_0.08_0.099.csv", "Intercept_simulation_0.08_0.csv")
x[order(gsub(".*[a-z]_|\\.csv", "", x))]
#[1] "Intercept_simulation_0_0.csv"        "Intercept_simulation_0_0.037.csv"    "Intercept_simulation_0_0.074.csv"   
#[4] "Intercept_simulation_0_0.099.csv"    "Intercept_simulation_0.02_0.csv"     "Intercept_simulation_0.02_0.037.csv"
#[7] "Intercept_simulation_0.02_0.074.csv" "Intercept_simulation_0.02_0.099.csv" "Intercept_simulation_0.04_0.csv"    
#[10] "Intercept_simulation_0.04_0.037.csv" "Intercept_simulation_0.04_0.074.csv" "Intercept_simulation_0.04_0.099.csv"
#[13] "Intercept_simulation_0.06_0.csv"     "Intercept_simulation_0.06_0.037.csv" "Intercept_simulation_0.06_0.074.csv"
#[16] "Intercept_simulation_0.06_0.099.csv" "Intercept_simulation_0.08_0.csv"     "Intercept_simulation_0.08_0.037.csv"
#[19] "Intercept_simulation_0.08_0.074.csv" "Intercept_simulation_0.08_0.099.csv"
x <- c("Intercept_simulation_0_0.037.csv", "Intercept_simulation_0_0.074.csv", 
"Intercept_simulation_0_0.099.csv", "Intercept_simulation_0_0.csv", 
"Intercept_simulation_0.02_0.037.csv", "Intercept_simulation_0.02_0.074.csv", 
"Intercept_simulation_0.02_0.099.csv", "Intercept_simulation_0.02_0.csv", 
"Intercept_simulation_0.04_0.037.csv", "Intercept_simulation_0.04_0.074.csv", 
"Intercept_simulation_0.04_0.099.csv", "Intercept_simulation_0.04_0.csv", 
"Intercept_simulation_0.06_0.037.csv", "Intercept_simulation_0.06_0.074.csv", 
"Intercept_simulation_0.06_0.099.csv", "Intercept_simulation_0.06_0.csv", 
"Intercept_simulation_0.08_0.037.csv", "Intercept_simulation_0.08_0.074.csv", 
"Intercept_simulation_0.08_0.099.csv", "Intercept_simulation_0.08_0.csv")