R语言中grep函数及grepl函数
一、grep函数
1、提取特定开头项
> dat <- c(34, 22, 43, 64, 52, 347, 54) ## 测试向量 > dat [1] 34 22 43 64 52 347 54 > grep("^3", dat) ## 从dat中检索,提取以3开头的项,返回的是索引 [1] 1 6 > grep("^3", dat, value = T) ## 增加value = T, 则直接返回项的内容 [1] "34" "347"
2、提取特定结尾项
> dat <- c(34, 22, 43, 64, 52, 347, 54) ## 测试向量 > dat [1] 34 22 43 64 52 347 54 > grep("4$", dat) ## 提取以4开头的项,返回的索引 [1] 1 4 7 > grep("4$", dat, value = T) [1] "34" "64" "54"
3、同时指定开头和结尾、间隔字符数
> dat <- c(3847, 22, 43, 64, 52, 347, 54) > dat ## 测试向量 [1] 3847 22 43 64 52 347 54 > grep("^3.*7$", dat) ## 提取以3开头、同时以7结尾的所有项, 返回索引 [1] 1 6 > grep("^3.*7$", dat, value = T) ## 直接返回项 [1] "3847" "347" > grep("^3.7$", dat) ## 提取以3开头,以7结尾,同时中间有一个字符的项,返回索引 [1] 6 > grep("^3.7$", dat, value = T) ## 直接返回项 [1] "347"
4、精确匹配
> dat <- c(3847, 34, 4346, 64, 52, 347, 54) > dat [1] 3847 34 4346 64 52 347 54 > grep(34, dat) ## 提取包含34的项,返回索引 [1] 2 3 6 > grep(34, dat, value = T) ## 提取包含34的项,直接返回值 [1] "34" "4346" "347" > grep("^34$", dat) ## 精确为34的项,返回索引 [1] 2 > grep("^34$", dat, value = T) ## 返回值 [1] "34"
5、逆向匹配
> dat <- c(3847, 34, 4346, 64, 52, 347, 54) > dat [1] 3847 34 4346 64 52 347 54 > grep("^3", dat, value = T) ## 提取以3开头的项,直接返回值 [1] "3847" "34" "347" > grep("^3", dat, value = T, invert = T) ## 提取不以3开头的项,返回值 [1] "4346" "64" "52" "54"
6、忽略大小写
> dat <- c("dfaB", "ab", "ert", "AB", "erAb", "xy") > dat [1] "dfaB" "ab" "ert" "AB" "erAb" "xy" > grep("ab", dat, value = T) ## 提取包含ab的项 [1] "ab" > grep("ab", dat, value = T, ignore.case = T) ## 提取包含ab的项, 忽略大小写 [1] "dfaB" "ab" "AB" "erAb"
二、grepl函数
> dat <- c(34, 42, 36, 43, 35, 734, 223) > dat [1] 34 42 36 43 35 734 223 > grepl(34, dat) ## grepl直接返回逻辑值 [1] TRUE FALSE FALSE FALSE FALSE TRUE FALSE > grepl("^3", dat) [1] TRUE FALSE TRUE FALSE TRUE FALSE FALSE > !grepl("^3", dat) [1] FALSE TRUE FALSE TRUE FALSE TRUE TRUE ## 添加感叹号,逆向返回逻辑值