【发布时间】:2020-06-07 20:25:45
【问题描述】:
我有一个包含一列字符串的数据框。我想检查每个字符串中的任何元素是否与一个或多个预定义向量中的任何元素匹配,然后返回一个新的逻辑列。使用grepl() 很容易做到这一点。
但是(这是我需要帮助的部分),我还想检查字符串是否包含任何元素 other 而不是关键字向量中包含的元素。
示例数据:
matchvector1 <- c("Apple","Banana","Orange")
matchvector2 <- c("Strawberry","Kiwi","Grapefruit")
id <- c(1,2,3)
string_column <- c(paste0(c("Apple","Banana"),collapse=", "), paste0(c("Strawberry","Kiwi"), collapse = ", "), paste0(c("Apple","Pineapple"), collapse = ", "))
df <- data.frame(id, string_column)
df$string_column <- as.character(df$string_column)
matches_vector1 <- grepl(paste(matchvector1, collapse = "|"), df$string_column)
matches_vector2 <- grepl(paste(matchvector2, collapse = "|"), df$string_column)
输出应该类似于:
matches_vector1: TRUE FALSE TRUE
matches_vector2: FALSE TRUE FALSE
unmatched_words: FALSE FALSE TRUE
我被困在最后一部分。有没有一种简单的方法可以使用grepl()(或其他函数)匹配关键字列表中的任何内容except?我怀疑它会以某种方式涉及使用负面环视,但现有的几个线程似乎没有回答我的问题。
【问题讨论】: