如何解决greplpattern,df中的错误:正则表达式无效
我一直在尝试在列中搜索特定模式。 我的模式是一个很大的单词列表(> 2000),要显示的列有数百万行(df $ column1)
我已经使用其他数据框中的列创建了模式
word<-df2$words_to_use
pattern<-paste0('.*',word,'.*',collapse ='|')
所以我的模式看起来像(> 2000个单词):
.* word1.* | .* word2.* | .* word3.* | .* word4.*
我想在df中创建一个Y / N列,该列说明df $ column1是否包含模式中的任何单词。
做到这一点
df$check<-ifelse(grepl(pattern,df$column1),'Y','N')
对于小模式它很好用,但对于大模式,我会收到错误消息
Error in grepl(pattern,df$column1):invalid regular expression
非常感谢您能帮助我!
解决方法
如果元素很多,请不要使用paste
和lapply
遍历模式向量,而不是Reduce
一起
ifelse(Reduce(`|`,lapply(word,function(pat) grepl(pat,df$column1))),"Y","N")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。