这个问题已经在这里有一个答案:
我有两个字符串:
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"
虽然这个工作,它似乎相当复杂,我(给定问题的简单)。是否有更简洁的方案来实现我想要什么?
一个办法是用分隔符paste
到|
“删除”,以匹配任何一个作为pattern
在grep
,并使用以“串”相匹配,同时指定invert
TRUE和value
为TRUE
grep(paste(delete, collapse="|"), string, invert = TRUE, value = TRUE)
#[1] "jklo" "mnop"