Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择不包含特定模式R正则表达式的字符串_R_Regex - Fatal编程技术网

选择不包含特定模式R正则表达式的字符串

选择不包含特定模式R正则表达式的字符串,r,regex,R,Regex,我有一组文件,希望从中选择不包含术语“dataset”或“eff”的文件 数据 k <- c("Duct1/X SN5 F9MH.csv", "Duct1/X SN5 F9MH_dataset.csv", "Duct1/X SN5 F9MH_eff.csv", "Duct2/X F7 X300 E10.csv", "Duct2/X F7 X300 E10_dataset.csv", "Duct2/X F7 X300 E10_eff.csv", "Duct3/X600 F8 X600 E

我有一组文件,希望从中选择不包含术语“dataset”或“eff”的文件

数据

k <- c("Duct1/X SN5 F9MH.csv", "Duct1/X SN5 F9MH_dataset.csv", "Duct1/X SN5 F9MH_eff.csv", 
"Duct2/X F7 X300 E10.csv", "Duct2/X F7 X300 E10_dataset.csv", 
"Duct2/X F7 X300 E10_eff.csv", "Duct3/X600 F8 X600 E10.csv", 
"Duct3/X600 F8 X600 E10_dataset.csv", "Duct3/X600 F8 X600 E10_eff.csv", 
"Duct4/X F7 X600 E10.csv", "Duct4/X F7 X600 E10_dataset.csv", 
"Duct4/X F7 X600 E10_eff.csv")
我可以使用
grepl
获得结果,并使用它来子集字符向量:

> k[!grepl(pattern = 'N', x = k)]
[1] "Duct2/X F7 X300 E10.csv"            "Duct2/X F7 X300 E10_dataset.csv"    "Duct2/X F7 X300 E10_eff.csv"       
[4] "Duct3/X600 F8 X600 E10.csv"         "Duct3/X600 F8 X600 E10_dataset.csv" "Duct3/X600 F8 X600 E10_eff.csv"    
[7] "Duct4/X F7 X600 E10.csv"            "Duct4/X F7 X600 E10_dataset.csv"    "Duct4/X F7 X600 E10_eff.csv" 
对于我的实际用例(
dataset | eff
):

但是我正在寻找一种使用
grep(…,value=T)
的方法,因为我不想存储字符向量(
k
),它是另一个函数的输出

grep('N',k,value = T,invert = T)
[1] "Duct2/X F7 X300 E10.csv"           
[2] "Duct2/X F7 X300 E10_dataset.csv"   
[3] "Duct2/X F7 X300 E10_eff.csv"       
[4] "Duct3/X600 F8 X600 E10.csv"        
[5] "Duct3/X600 F8 X600 E10_dataset.csv"
[6] "Duct3/X600 F8 X600 E10_eff.csv"    
[7] "Duct4/X F7 X600 E10.csv"           
[8] "Duct4/X F7 X600 E10_dataset.csv"   
[9] "Duct4/X F7 X600 E10_eff.csv"
因此,在您的情况下,您可以:

grep('eff | dataset',k,invert=TRUE,value=TRUE)

> k[!grepl(pattern = 'eff|dataset', x = k)]
[1] "Duct1/X SN5 F9MH.csv"       "Duct2/X F7 X300 E10.csv"    "Duct3/X600 F8 X600 E10.csv"
[4] "Duct4/X F7 X600 E10.csv"   
grep('N',k,value = T,invert = T)
[1] "Duct2/X F7 X300 E10.csv"           
[2] "Duct2/X F7 X300 E10_dataset.csv"   
[3] "Duct2/X F7 X300 E10_eff.csv"       
[4] "Duct3/X600 F8 X600 E10.csv"        
[5] "Duct3/X600 F8 X600 E10_dataset.csv"
[6] "Duct3/X600 F8 X600 E10_eff.csv"    
[7] "Duct4/X F7 X600 E10.csv"           
[8] "Duct4/X F7 X600 E10_dataset.csv"   
[9] "Duct4/X F7 X600 E10_eff.csv"