使用grep选择列表中包含的字符串

时间:2014-05-31 08:30:46

标签: regex r dataframe

我有一个数据框:

id  <- c(1:5)
name <- c("blackdog","whitedog", "blackcat","whitecat","greyrabbit")
df <- data.frame(id,name)
df

我还有一个选择列表:

select <- c("black","dog","grey")

所以我想返回一个包含以下内容的数据框: blackdog,blackcat,whitedog,greyrabbit

我试过了:

dfselect <-df[grep(select,df[,2]),]
dfselect 

但这只是选择列表的第一个元素。

我很感激你的帮助。

2 个答案:

答案 0 :(得分:2)

不需要在这里使用循环:

df[grep(paste(select,collapse='|'),df$name),]

## id       name
## 1  1   blackdog
## 2  2   whitedog
## 3  3   blackcat
## 5  5 greyrabbit

答案 1 :(得分:0)

我认为你想要做的是使用apply函数:

> df$name[unique(unlist(lapply(select, FUN=function(x) grep(x,df$name))))]
[1] blackdog   blackcat   whitedog   greyrabbit
Levels: blackcat blackdog greyrabbit whitecat whitedog

那是你所追求的吗?