表达式中间的通配符?

时间:2012-04-03 12:24:47

标签: regex r

我尝试根据文件名加载不同类别的文件。直到现在我总是使用

list<-dir(pattern=".gle$") 

获取所有gle文件。现在我想加载人口bg,campo&amp; pca单独和我正在寻找一个可以在文件名中间使用的通配符,例如。

0KK_bg_SunAdj.gle
0LC_campo_SunAdj.gle
0KR_pca_SunAdj_corr.gle

我想到了像

这样的东西
list<-dir(pattern=glob2rx("*something*bg*something*.gle$"))

但我尝试了?glob2rx帮助文件中的所有示例,但没有成功。 我确信它是可能的(我的意思是;它是R ......)但我无法弄清楚......

谢谢!

2 个答案:

答案 0 :(得分:3)

怎么样

list1<-dir(pattern="[[:print:]]*_bg_[[:print:]]*.gle")
list2<-dir(pattern="[[:print:]]*_campo_[[:print:]]*.gle")
list3<-dir(pattern="[[:print:]]*_pca_[[:print:]]*.gle")

但是这些可能会获取目录中的其他文件。如果没有,那么@RomanLuštrik可能会在上面的评论中击中头部。 编辑:实际上,@RomanLuštrik的评论会收集non.gle文件。所以上面的代码会更合适。

答案 1 :(得分:1)

我认为您需要glob2rx功能中的其他选项来修剪头部和尾部。例如,

R> f = c("0KK_bg_SunAdj.gle", "0LC_campo_SunAdj.gle", "0KR_pca_SunAdj_corr.gle")
R> m = glob2rx("*campo*.gle", FALSE, FALSE)
R> grepl(m, f)
[1] FALSE  TRUE FALSE