Точный поиск ключевого слова в R-кадре - PullRequest
0 голосов
/ 04 октября 2018

input:

a <- c('a,a b,a b c,a b c d')

Как и первое слово символа, т.е. просто "a" grep (функция поиска) для другого кадра данных, например,

df <- data.frame(rbind(c('a',1,'ewew'),c('a b c',101,'dffdhsd')))

и вывод в кадре данных:

a,a b c

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Мы разбиваем 'a' на ',' на vector и проверяем, есть ли у any столбцов эти элементы, чтобы создать логический вектор для подстановки столбцов

v1 <- unlist(strsplit(a, ","))
df[, sapply(df, function(x) any(x %in% v1))]
#[1] a     a b c
#Levels: a a b c

Если нам нужно использовать grep, замените , на | в 'a' и используйте его как pattern

pat <- gsub(",", "|", a)

или

pat <- chartr(",", "|", a)
df[, colSums(sapply(df, grepl, pattern = pat)) > 1]
0 голосов
/ 04 октября 2018

Мне не ясно, является ли это вашей целью, но вы можете попробовать:

> ind <- apply(df, 1:2, function(x) x %in% strsplit(a, ",")[[1]])
> df[ind]
[1] "a"     "a b c"
...