R 如何按日期对文件列表进行排序?

R 如何按日期对文件列表进行排序?,r,R,我使用list.files(path,pattern,full.names=TRUE)获取特定目录中的文件列表 默认情况下,文件按字母顺序排序。R中有没有办法按日期对它们进行排序?您可以使用file.info功能获取文件的详细信息。一旦获得了这些详细信息,就可以相应地对文件进行排序。比如说, details = file.info(list.files(pattern="*.csv")) 给出一个数据帧,其中包括修改和创建时间。您可以根据需要对该数据帧进行排序。这里我根据修改时间进行排序,mt

我使用
list.files(path,pattern,full.names=TRUE)
获取特定目录中的文件列表


默认情况下,文件按字母顺序排序。R中有没有办法按日期对它们进行排序?

您可以使用
file.info
功能获取文件的详细信息。一旦获得了这些详细信息,就可以相应地对文件进行排序。比如说,

details = file.info(list.files(pattern="*.csv"))
给出一个数据帧,其中包括修改和创建时间。您可以根据需要对该数据帧进行排序。这里我根据修改时间进行排序,
mtime

details = details[with(details, order(as.POSIXct(mtime))), ]
files = rownames(details)

请注意,您还可以按
访问时间
创建时间
进行排序
这里有一个方便的并行函数,可以处理您喜欢的任何事情

sort_files_by_date <- function(folder_path = '.', search_pattern = NULL, by = 'mtime'){

require(furrr)
require(magrittr)
require(stringr)
require(tidyverse)

  if (!by %>% str_detect('^(m|a|c)time$')) {
    stop('Argument `by` must be one of "mtime", "atime", or "ctime".')
  }

  file_names <-

    # Gets all the file paths for a given path and pattern
    list.files(path = folder_path, pattern = search_pattern, full.names = TRUE) %>%

    # Turns into a one-column tibble (see below)
    tibble(file_names = .)

  files_by_datetime <-

    suppressWarnings(
      future_map_dfr(
        .x = file_names,
        .f = file.info,
        .progress = TRUE,
        extra_cols = FALSE # passed to file.info for performance boost
      )
    ) %>%

    # gets expanded file info, then select the last-modified time and last-accessed time
    select(mtime, atime, ctime) %>%

    # reintroduce our original 'file_names'
    bind_cols(file_names) %>%

    # arrange by descending time (depending on the users choice)
    arrange(
      desc(
        case_when(
          (by == 'mtime') ~ mtime,
          (by == 'atime') ~ atime,
          (by == 'ctime') ~ ctime
        )
      )
    )

  return(files_by_datetime)

}
sort_files_by_date%str_detect(“^(m | a | c)time$”){
stop('Argument`by`必须是“mtime”、“atime”或“ctime”中的一个)
}
文件名%
#变成一列TIBLE(见下文)
tibble(文件名=)
文件\u按\u日期时间%
#获取扩展文件信息,然后选择上次修改时间和上次访问时间
选择(mtime、atime、ctime)%>%
#重新引入我们原来的“文件名”
绑定列(文件名)%>%
#按降序时间排列(取决于用户选择)
安排(
描述(
什么时候(
(by==“mtime”)~mtime,
(by==“atime”)~atime,
(by=='ctime')~ctime
)
)
)
返回(按日期时间排列的文件)
}

可能有。给出一个可重复的例子。(你为什么想要这个?)。它还适用于full.names=TRUE,没有任何问题。如果不使用
list.files
,请确保提供文件的完整路径。这真是太棒了。如果您想按数量级提高性能,请考虑在<代码>文件.If()/<代码>的较新版本中使用<代码> ExtOxCys= false < /Cord>参数。这迫使R使用本机C后端代码。