从包含R中特定字符的字符串向量中删除条目

Lec*_*ine 9 string r character gsub grepl

我有两个字符向量:

x = {"a", "b", "c", "kt"}
y = {"abs", "kot", "ccf", "okt", "kk", "y"}
Run Code Online (Sandbox Code Playgroud)

我需要使用x从y中删除条目,以便只保留不包含任何x条目的字符串,如下所示:

y = {"kot", "kk", "y"}
Run Code Online (Sandbox Code Playgroud)

代码应适用于任何大小的向量x和y.

到目前为止,我已经尝试使用gsub和grepl,但这些只适用于单个字符串.我试图创建一个循环来做到这一点,但问题似乎比我想象的更难.当然,解决方案越复杂越好,但您可以假设在这种情况下,向量x和y最多有200个条目.

Ron*_*hah 13

我们可以使用grep找出y与模式匹配的值x并使用它们排除它们!%in%

y[!y %in% grep(paste0(x, collapse = "|"), y, value = T)]

#[1] "kot" "kk"  "y"  
Run Code Online (Sandbox Code Playgroud)

甚至更好,grepl因为它返回布尔向量

y[!grepl(paste0(x, collapse = "|"), y)]
Run Code Online (Sandbox Code Playgroud)