Как использовать grep()/gsub(), чтобы найти точное совпадение string = c("apple", "apples", "applez") grep("apple", string) Это даст мне индекс для всех трех элементов в string. Но я хочу точное совпадение слова "яблоко" (т.е. Я хочу, чтобы grep() возвращал индекс 1). Ответ 1 Используйте границу слова \b, которая соответствует символу между словом и символом, отличным от слова, string = c("apple", "apples", "applez") grep("\\bapple\\b", string) [1] 1 ИЛИ Используйте привязки. ^ Утверждается, что мы находимся в начале. $ Утверждается, что мы в конце. grep("^apple$", string) [1] 1 Вы можете сохранить регулярное выражение внутри переменной, а затем использовать его, как показано ниже. pat <- "\\bapple\\b" grep(pat, string) [1] 1 pat <- "^apple$" grep(pat, string) [1] 1 Update: paste("^",pat,"$", sep="") [1] "^apple$" string [1] "apple" "apple:s" "applez" pat [1] "apple" grep(paste("^",pat,"$", sep=""), string) [1] 1 Ответ 2 Для точного соответствия наиболее целесообразно использовать ==. Кроме того, это будет быстрее, чем grep(), и, очевидно, намного проще. which(string == "apple") # [1] 1
Ответ 1 Используйте границу слова \b, которая соответствует символу между словом и символом, отличным от слова, string = c("apple", "apples", "applez") grep("\\bapple\\b", string) [1] 1 ИЛИ Используйте привязки. ^ Утверждается, что мы находимся в начале. $ Утверждается, что мы в конце. grep("^apple$", string) [1] 1 Вы можете сохранить регулярное выражение внутри переменной, а затем использовать его, как показано ниже. pat <- "\\bapple\\b" grep(pat, string) [1] 1 pat <- "^apple$" grep(pat, string) [1] 1 Update: paste("^",pat,"$", sep="") [1] "^apple$" string [1] "apple" "apple:s" "applez" pat [1] "apple" grep(paste("^",pat,"$", sep=""), string) [1] 1
Ответ 2 Для точного соответствия наиболее целесообразно использовать ==. Кроме того, это будет быстрее, чем grep(), и, очевидно, намного проще. which(string == "apple") # [1] 1