R-字符关键字精确搜索到数据框

时间:2018-10-04 15:55:10

标签: r dataframe search grep keyword-search

输入:

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

像字符的第一个单词,即只是一个grep(搜索功能)到另一个数据框,即

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

并在数据框中输出:

a,a b c

2 个答案:

答案 0 :(得分:0)

我不清楚这是否是您的目标,但是您可以尝试:

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

答案 1 :(得分:0)

我们将'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]