如何解决在 for 循环中使用 Grepl 获得精确匹配
在使用向量过滤数据框时,我无法让 grepl 进行精确匹配。我在下面使用了一个可重现的示例:
my_vector<-c("Mazda","Datsun")
my_df<-data.frame(My_vehicles=c("Mazda","Mazda2","Mazda3","Datsun","Datsun2","Datsun3"))
如果我运行下面的代码
grepl("\\bMazda\\b",my_df$My_vehicles)
我将此作为正确的输出 TRUE FALSE FALSE FALSE FALSE FALSE
然而,我似乎无法让它在循环中工作。下面的例子
list_df<-list()
for (i in 1:length(my_vector))
{ df<-my_df%>%
filter(grepl(my_vector[i],My_vehicles))
list_df[[i]]=df
}
如果我改变了
filter(grepl(my_vector[i],My_vehicles))
到
filter(grepl("\\bmy_vector[i]\\b",My_vehicles))
我没有得到正确的结果。我想要的是从循环中生成的两个新数据帧的列表,每个数据帧都应该有 1 个已正确过滤的变量。
解决方法
试试这个:
list_df<-list()
for (i in 1:length(my_vector))
{
df<-my_df%>%
filter(grepl(paste0("\\b",my_vector[i],"\\b"),My_vehicles))
list_df[[i]]=df
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。