gpt4 book ai didi

r - 在字符串列表上映射 str_detect 以检测第二个字符串列表

转载 作者:行者123 更新时间:2023-12-05 08:30:58 26 4
gpt4 key购买 nike

获取字符串列表:

strings <- c("ABC_XZY", "qwe_xyz", "XYZ")

我想获取 strings 中不包含特定子字符串的所有元素

avoid <- c("ABC")

我能做到

library(stringr)
library(dplyr)
library(purrr)

strings %>%
.[!map_lgl(., str_detect, avoid)]
[1] "qwe_xyz" "XYZ"

不过我想做的是指定几个子字符串

avoid_2 <- c("ABC", "qwe")

然后像以前一样映射列表(不起作用)

strings %>% 
.[!map_lgl(., str_detect, avoid_2)]
Error: Result 1 must be a single logical, not a logical vector of length 2

我想要的是

[1] "XYZ"

错误很明显 - string 的每个元素都为 avoid_2 的每个元素生成逻辑,总共有 2 个逻辑/元素和 map_lgl 只能处理一个/元素。

我当然可以分别处理每个子字符串,但我不想 - 我想制作一个子字符串列表

不想,但确实有效

strings %>%
.[!map_lgl(., str_detect, "ABC")] %>%
.[!map_lgl(., str_detect, "qwe")]

最佳答案

一个选项可能是:

strings[map_lgl(strings, ~ !any(str_detect(., avoid_2)))]

[1] "XYZ"

或者直接做:

strings[!str_detect(strings, paste(avoid_2, collapse = "|"))]

关于r - 在字符串列表上映射 str_detect 以检测第二个字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60712391/

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