R中的AND grepl操作
AND grepl operation in R
假设我有以下字符
c <- "1 NA NA 4 5 6 NA NA 9 10 NA NA 13 14 15 16 17 18 19 20 NA NA 23 NA NA NA NA"
我怎样才能 grepl 测试它是否包含 1、5 和 6?没有将 15、16 等作为误报?
您可以在 1,5,6
:
周围使用单词边界 \b
grepl("\b[156]\b", c)
# [1] TRUE
如果要检查是否所有 1,5,6
都包含在字符串中,可以在模式位置 grepl
向量化:
all(Vectorize(grepl)(paste("\b", c(1,5,6), "\b", sep = ""), c))
# [1] TRUE
当我们从字符串中删除 1
时:
c <- "NA NA 4 5 6 NA NA 9 10 NA NA 13 14 15 16 17 18 19 20 NA NA 23 NA NA NA NA"
grepl("\b[156]\b", c) # this is or condition, will still give true
# [1] TRUE
all(Vectorize(grepl)(paste("\b", c(1,5,6), "\b", sep = ""), c)) # This gives FALSE since
# pattern \b1\b is not there
# [1] FALSE
假设我有以下字符
c <- "1 NA NA 4 5 6 NA NA 9 10 NA NA 13 14 15 16 17 18 19 20 NA NA 23 NA NA NA NA"
我怎样才能 grepl 测试它是否包含 1、5 和 6?没有将 15、16 等作为误报?
您可以在 1,5,6
:
\b
grepl("\b[156]\b", c)
# [1] TRUE
如果要检查是否所有 1,5,6
都包含在字符串中,可以在模式位置 grepl
向量化:
all(Vectorize(grepl)(paste("\b", c(1,5,6), "\b", sep = ""), c))
# [1] TRUE
当我们从字符串中删除 1
时:
c <- "NA NA 4 5 6 NA NA 9 10 NA NA 13 14 15 16 17 18 19 20 NA NA 23 NA NA NA NA"
grepl("\b[156]\b", c) # this is or condition, will still give true
# [1] TRUE
all(Vectorize(grepl)(paste("\b", c(1,5,6), "\b", sep = ""), c)) # This gives FALSE since
# pattern \b1\b is not there
# [1] FALSE