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

标签 r string character gsub grepl

这个问题在这里已经有了答案:





Difference of two character vectors with substring

(3 个回答)


4年前关闭。




我有两个字符向量:

x = {"a", "b", "c", "kt"}
y = {"abs", "kot", "ccf", "okt", "kk", "y"}

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

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

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

最佳答案

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

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

#[1] "kot" "kk"  "y"  

甚至更好的 grepl因为它返回 bool 向量
y[!grepl(paste0(x, collapse = "|"), y)]

简明版本 grep使用 invertvalue参数
grep(paste0(x, collapse = "|"), y, invert = TRUE, value = TRUE)
#[1] "kot" "kk"  "y"  

关于从包含 R 中特定字符的字符串向量中删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40885360/

相关文章:

java - 在 Java 中检查符号 ® 的字符串的正确方法是什么?

mysql - 在mysql字符串函数中搜索特殊字符

r - 更改 R 中 iGraph 中顶点之间的间距

R:如何在 lapply() 中应用 grep()

c - "function strupr not declared on this scope"

Java 用空白分隔符分割字符串

r - 函数在不应该返回 NaN 的情况下返回 NaN

r - 在 R 中向维恩图添加百分比

c++ - 内存有效的字符串 vector

c中的指针可以指向字符吗