R 试图删减文件列表
我有一个文件列表,我正在尝试提取所有layer1*.grd文件。在一个grep表达式中有这样做的方法吗R 试图删减文件列表,r,regex,R,Regex,我有一个文件列表,我正在尝试提取所有layer1*.grd文件。在一个grep表达式中有这样做的方法吗 lof <- c("layer1_1.grd", "layer1_1.gri", "layer1_2.grd", "layer1_2.gri", "layer1_3.grd", "layer1_3.gri", "layer1_4.grd", "layer1_4.gri", "layer1_5.grd", "layer1_5.gri", "layer2_1.grd", "layer2_
lof <- c("layer1_1.grd", "layer1_1.gri", "layer1_2.grd", "layer1_2.gri",
"layer1_3.grd", "layer1_3.gri", "layer1_4.grd", "layer1_4.gri",
"layer1_5.grd", "layer1_5.gri", "layer2_1.grd", "layer2_1.gri",
"layer2_2.grd", "layer2_2.gri", "layer2_3.grd", "layer2_3.gri",
"layer2_4.grd", "layer2_4.gri", "layer2_5.grd", "layer2_5.gri",
"layer3_1.grd", "layer3_1.gri", "layer3_2.grd", "layer3_2.gri",
"layer3_3.grd", "layer3_3.gri", "layer3_4.grd", "layer3_4.gri",
"layer3_5.grd", "layer3_5.gri", "layer4_1.grd", "layer4_1.gri",
"layer4_2.grd", "layer4_2.gri", "layer4_3.grd", "layer4_3.gri",
"layer4_4.grd", "layer4_4.gri", "layer4_5.grd", "layer4_5.gri")
我试着分两步来做:
list.of.files <- list.files(pattern = c("1_"))
list.of.files <- list.of.files[grep(".grd", list.of.files)]
有人能告诉我如何一步完成这项工作吗?我天真地尝试将list和c传递给grep,但是,正如您所想象的,它不起作用
list.of.files <- list.files()
list.of.files <- list.of.files[grep(list("1_", ".grd"), list.of.files)]
这应该适合您:
> lof[grep("layer1_.*.grd", lof)]
[1] "layer1_1.grd" "layer1_2.grd" "layer1_3.grd" "layer1_4.grd" "layer1_5.grd"
另外,为了澄清你的术语:你的文件列表并不是一个真正的列表;这是一个字符向量。这应该适用于您:
> lof[grep("layer1_.*.grd", lof)]
[1] "layer1_1.grd" "layer1_2.grd" "layer1_3.grd" "layer1_4.grd" "layer1_5.grd"
另外,为了澄清你的术语:你的文件列表并不是一个真正的列表;这是一个字符向量。stringr的替代方案是lof[str_detectlof,layer1.*.grd]
事实上,在这种情况下,您可以更具体地了解缺少的字符,因此layer1_[[:digit:].grd将作为此处的模式,如果lof很长,则可能会更快。stringr替代方法是lof[str_detectlof,layer1_173.grd]
事实上,在这种情况下,您可以更具体地说明缺少的字符,因此layer1_[[:digit:].\\\.grd将作为这里的模式,如果lof很长,可能会更快。要获得匹配的值,可以使用greplayer1_173.*.grd,lof,value=TRUE。我认为您需要layer1_[:\\\\\\.grd因为单点意味着匹配一个字符,所以。*。和.+给出了相同的结果。检查greplayer1_.*.grd,layer1_xgrd。要获得匹配的值,可以使用greplayer1_.*.grd,lof,value=TRUE。我想您需要layer1_.*\\\.grd,因为单点表示匹配一个字符,所以。*。和.+给出了相同的结果。检查greplayer1.*.grd,layer1.*grd。