gpt4 book ai didi

r - 检查字符串是否包含向量 [R] 中的项目以外的任何内容

转载 作者:行者123 更新时间:2023-12-04 09:42:55 25 4
gpt4 key购买 nike

我有一个包含一列字符串的数据框。我想检查每个字符串中的任何元素是否与一个或多个预定义向量中的任何元素匹配,然后返回一个新的逻辑列。这可以使用 grepl() 轻松完成。 .

但是(这是我需要帮助的部分),我还想检查字符串是否包含关键字向量中包含的元素以外的任何元素。

示例数据:

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() 匹配除关键字列表中的某些内容之外的任何内容? (或其他功能)?我怀疑它会以某种方式涉及使用负面环视,但是关于此的少数现有线程似乎没有回答我的问题。

最佳答案

一种选择是用 separate_rows 拆分“string_column” , 按 'id' 分组,检查是否没有 any来自“string_column”的元素%in%连接的向量

library(dplyr)
library(tidyr)
df %>%
separate_rows(string_column) %>%
group_by(id) %>%
summarise(unmatched = any(!string_column %in% c(matchvector1, matchvector2)) )
# A tibble: 3 x 2
# id unmatched
#* <dbl> <lgl>
#1 1 FALSE
#2 2 FALSE
#3 3 TRUE

或在 base R
lengths(sapply(strsplit(df$string_column, ",\\s*"), 
setdiff, c(matchvector1, matchvector2))) > 0
#[1] FALSE FALSE TRUE

关于r - 检查字符串是否包含向量 [R] 中的项目以外的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62251210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com