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   ## 添加感叹号,逆向返回逻辑值

 

posted @ 2022-05-07 18:16  小鲨鱼2018  阅读(619)  评论(0编辑  收藏  举报