grepl(pattern, df) 错误:正则表达式无效

Error in grepl(pattern, df): invalid regular expression

我一直在尝试在列中搜索特定模式。 我的模式是一个相当大的单词列表 (>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 在一起,用 lapplyReduce

循环模式向量
ifelse(Reduce(`|`, lapply(word, function(pat) grepl(pat, df$column1))), "Y", "N")