我正在尝试确定一个字符串是否是另一个字符串的子集。例如:
chars <- "test"
value <- "es"
如果"value“作为字符串"chars”的一部分出现,我想返回TRUE。在下面的场景中,我想返回false:
chars <- "test"
value <- "et"
发布于 2012-04-13 01:28:43
使用grepl
函数
grepl( needle, haystack, fixed = TRUE)
如下所示:
grepl(value, chars, fixed = TRUE)
# TRUE
使用?grepl
了解更多信息。
发布于 2012-04-13 01:28:40
你想要grepl
> chars <- "test"
> value <- "es"
> grepl(value, chars)
[1] TRUE
> chars <- "test"
> value <- "et"
> grepl(value, chars)
[1] FALSE
发布于 2014-03-14 17:46:12
使用stringi
包中的函数:
> stri_detect_fixed("test",c("et","es"))
[1] FALSE TRUE
一些基准测试:
library(stringi)
set.seed(123L)
value <- stri_rand_strings(10000, ceiling(runif(10000, 1, 100))) # 10000 random ASCII strings
head(value)
chars <- "es"
library(microbenchmark)
microbenchmark(
grepl(chars, value),
grepl(chars, value, fixed=TRUE),
grepl(chars, value, perl=TRUE),
stri_detect_fixed(value, chars),
stri_detect_regex(value, chars)
)
## Unit: milliseconds
## expr min lq median uq max neval
## grepl(chars, value) 13.682876 13.943184 14.057991 14.295423 15.443530 100
## grepl(chars, value, fixed = TRUE) 5.071617 5.110779 5.281498 5.523421 45.243791 100
## grepl(chars, value, perl = TRUE) 1.835558 1.873280 1.956974 2.259203 3.506741 100
## stri_detect_fixed(value, chars) 1.191403 1.233287 1.309720 1.510677 2.821284 100
## stri_detect_regex(value, chars) 6.043537 6.154198 6.273506 6.447714 7.884380 100
https://stackoverflow.com/questions/10128617
复制相似问题