문자열의 벡터 texts
과 패턴 patterns
의 벡터가 주어지면 각 텍스트에 대해 일치하는 패턴을 찾고 싶습니다.빠른 부분 문자열 일치 R
patterns = c("some","pattern","a","horse")
texts = c("this is a text with some pattern", "this is another text with a pattern")
# for each x in patterns
lapply(patterns, function(x){
# match all texts against pattern x
res = grepl(x, texts, fixed=TRUE)
print(res)
# do something with the matches
# ...
})
이 솔루션은 정확하지만 확장하지 않습니다 작은 데이터 세트에 대한
이 쉽게 grepl
와 R에서 수행 할 수 있습니다. 약간 큰 데이터 세트 (~ 500 개의 텍스트와 패턴)가 있더라도,이 코드는 현대 기계에서 초당 약 100 개의 케이스를 해결한다는 것은 당황 스럽습니다. 이것은 정규 표현식을 사용하지 않고 조잡한 문자열 부분 매칭이라고 생각하면 어리 석습니다 (fixed=TRUE
). lapply
을 병렬로 설정해도 문제가 해결되지 않습니다. 이 코드를 효율적으로 다시 쓸 수있는 방법이 있습니까?
덕분에, Mulone
패턴이 항상 한 단어입니까? 'patterns'의 각 요소가'texts' 요소 중 하나 이상에서 발생하는지 (아니면'texts' 요소가 발생했는지 알아야합니까?)에 관심이 있습니까? – jbaums