删除基于含有部分匹配数另一个字符串矢量串矢量元素[复制]

问题描述 投票:2回答:1

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

我有两个字符串:

string <- c("abcd", "efgh", "jklo", "mnop")
delete <- c("ab", "ef")

delete包含string元件的部分(但明确的)匹配数。现在我想删除string相应的元素。

下面的代码产生预期的我的输出:

string[!as.logical(rowSums(sapply(delete, function(x){grepl(x, string)})))]
# [1] "jklo" "mnop"

虽然这个工作,它似乎相当复杂,我(给定问题的简单)。是否有更简洁的方案来实现我想要什么?

r string grep sapply
1个回答
4
投票

一个办法是用分隔符paste|“删除”,以匹配任何一个作为patterngrep,并使用以“串”相匹配,同时指定invert TRUE和value为TRUE

grep(paste(delete, collapse="|"), string, invert = TRUE, value = TRUE)
#[1] "jklo" "mnop"
© www.soinside.com 2019 - 2024. All rights reserved.