r - 根据数据框中的字符列出文件(部分名称匹配)
问题描述
我有一个包含多个文件的目录。文件名的格式相同,如下所示:
mar_1999_cloglog.asc
mar_2000_cloglog.asc
mar_2001_cloglog.asc
等等
文件名的第一部分指的是月份(在本例中为三月),第二部分指的是年份(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)
我尝试了其他几种变体,但没有运气。有人能帮忙吗?我相信这很容易,但我似乎无法理解它。
提前致谢。
解决方案
这涉及一个小循环。
我为这个问题创建了一个示例数据集。
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
所需的输出作为字符向量获得。
推荐阅读
- neo4j - 密码中collect(nodes(path))的优先顺序是什么
- scala - 将 Spark 应用程序提交到 HDInsights 时出现 HTTP 发布问题
- xamarin - Xamarin Forms:从按钮和 onAppearing 使用相同的命令不起作用
- java - Anylogic - 使用导入的数据库从一个源将代理发送到各种矩形节点
- r - 在 rmarkdown 中绘制神经网络
- c++ - C++ 类成员:堆栈与堆分配
- node.js - NodeJS,Joi 验证 - 验证失败时中止执行
- c# - 搜索包含额外字符的 ID
- node.js - 在使用 Spawn Child Process 时使用文件的内容
- windows - 调试器命令语法解释