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后端代码。