Кадры данных Sapply grepl точное/полное совпадение

У меня та же проблема, что и в:

Как применить grepl для фрейма данных

Но я получаю нежелательные совпадения, например:

Полное сопоставление слов с помощью grepl в R

Как применить решение \‹ или \b в среде sapply, когда grepl перебирает векторы?


person Antonio    schedule 04.11.2017    source источник


Ответы (2)


Вы использовали анонимную функцию для применения к каждому элементу столбцов во фрейме данных.

vec1 <- c("I don't want to match this", "This is what I want to match")
vec2 <- c('Why would I match this?', "What is a good match for this?")

df <- data.frame(vec1,vec2)

sapply(df, function(x) grepl("\\<is\\>", x))

      vec1  vec2
[1,] FALSE FALSE
[2,]  TRUE  TRUE
person Jake Kaupp    schedule 04.11.2017
comment
Спасибо, но мне нужно немного другое, как в первой ссылке. Вектор содержит предложения, другие слова. Мне нужна матрица, показывающая, какие предложения содержат какие слова, но только если они полные. Поэтому я должен применить функцию, которую вы описываете, к вектору, я думаю, но не уверен, как это сделать. Спасибо за вашу помощь. - person Antonio; 06.11.2017

Я сам нашел решение. Достаточно вставить пробел до и после каждого элемента вектора, чтобы он соответствовал предложениям.

vector <- paste(" ", vector, " ")

matches <- sapply(vector, grepl, sentences, ignore.case=TRUE )
person Antonio    schedule 20.03.2018