我有一个包含多个文件的目录。文件名具有相同的格式,如下所示:
mar_1999_cloglog.asc
mar_2000_cloglog.asc
mar_2001_cloglog.asc
等
文件名的第一部分是月份(在本例中为3月),第二部分是年份(1999、2000等)。
我还有一个单列数据框,每行包含一年:
'data.frame': 11 obs. of 1 variable:
$ yrlst: int 1998 2001 2002 2003 2004 2006 2009 2010 2011 2013
我正在尝试列出目录的文件,这些目录的年份在数据帧中找到。我在目录中创建了一个文件列表,然后将数据帧转换为向量(dfvector
),然后使用grep进行模式匹配,但是结果列表为空:
dirlst <- list.files(paste0("filepath", pattern = "cloglog", recursive = FALSE, full.names = TRUE)
test <- grep(list.files(dirlst), pattern = dfvector, value = TRUE)
我尝试了其他几种变体,但是没有运气。有人能帮忙吗?我敢肯定这很容易,但是我似乎无法将其包裹住。
谢谢。
答案 0 :(得分:0)
这涉及一个小循环。
我为此问题创建了一个样本数据集。
a 与list.files(filepath,patter =“。asc”)
相同
b 与年份列表的数据框相同。
a <- c("1900.asc", "1901.asc", "1902.asc", "1903.asc", "1904.asc","1905.asc","1906.asc")
b <- c("1901","1904")
x <- vector()
for(i in 1:length(b)){
y <- a[grepl(b[i], a)]
x <- union(x, y)
}
x
所需的输出作为字符向量获得。
答案 1 :(得分:0)
还有更好的方法。
list_dir <- c("1900.asc", "1901.asc", "1902.asc", "1903.asc", "1904.asc","1905.asc","1906.asc")
years <- c("1901","1904")
select_files <- list_dir[grepl(paste(years, collapse= "|"), list_dir)]