我有一个数据框:
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
但这只是选择列表的第一个元素。
我很感激你的帮助。
答案 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
那是你所追求的吗?