죄송하지만 댓글에 대한 너무 많은 라인입니다 :
stri_detect_regex(x, pattern)
## [1] TRUE TRUE TRUE FALSE
그리고 몇 가지 벤치 마크 : 귀하의 경우 패턴은 그래서이 하나를 사용 정규식입니다.
단일 일치 패턴으로 사용하기 위해 paste(..., collapse = "|")
을 통해 붙여 넣을 수있는 항목의 수가 제한되어 있습니다. 아래를 참조하십시오. 어쩌면 누군가가 한계가 정확히 어디에 있는지 말할 수 있을까요? 틀림없이 숫자는 현실적이지 않을 수도 있지만 수행 할 작업에 따라 우리의 고려 사항에서 완전히 제외되어서는 안됩니다.
정말 많은 수의 항목의 경우 패턴의 각 항목을 확인하는 데 루프가 필요할 수 있습니다.
set.seed(0)
samplefun <- function(n, x, collapse){
paste(sample(x, n, replace=TRUE), collapse=collapse)
}
words <- sapply(rpois(10000000, 8) + 1, samplefun, letters, '')
text <- sapply(rpois(1000, 5) + 1, samplefun, words, ' ')
#since execution takes a while, I have commented out the following lines
#result <- grepl(paste(words, collapse = "|"), text)
# Error in grepl(pattern, text) :
# invalid regular expression
# 'wljtpgjqtnw|twiv|jphmer|mcemahvlsjxr|grehqfgldkgfu|
# ...
#result <- stringi::stri_detect_regex(text, paste(words, collapse = "|"))
# Error in stringi::stri_detect_regex(text, paste(words, collapse = "|")) :
# Pattern exceeds limits on size or complexity. (U_REGEX_PATTERN_TOO_BIG)
@andrie,이 절대적으로 찬란한 것은 몇 년 동안 불가능하다고 가정하고있었습니다. 단순한 정규식 인 반면 –
@DavidArenburg :-) 나는 R에서 불가능한 것이 없다는 것을 쓴 경험에서 배웠습니다. 방법! – Andrie