我必须读取目录中的文件,然后从文件名中提取日期。

filenames <- list.files(path="C:/Downloads/vmstat", pattern="*vmstat*", full.names=TRUE)

像这样的文件名:
C:/Downloads/vmstat/vmstat.2016.11.22.Tue

我需要从该文件名中提取2016.11.22并将其分配给像dat这样的变量。如何从文件名中提取日期?

最佳答案

我们可以使用gsub匹配不是日期的子字符串,并将其替换为空格("")

gsub("^[^0-9]+\\.|\\.[A-Za-z]+$", "", filenames)
#[1] "2016.11.22"

或提取basename,然后使用Date转换为lubridate
lubridate::ymd(basename(filenames))
#[1] "2016-11-22"

数据
filenames <- "C:/Downloads/vmstat/vmstat.2016.11.22.Tue"

08-20 02:00