【问题标题】:Finding which larger string contains a list of smaller strings查找哪个较大的字符串包含较小字符串的列表
【发布时间】:2023-01-12 06:09:37
【问题描述】:

抱歉,如果这是重复的,我找不到任何东西,我开始做的一切都变得过于复杂。

我想查找哪些字符串(如果有的话)不在较小字符串列表中。

channels <- tolower(c("Digital","Social","TV","YouTube","Radio","OOH","Facebook","Reddit","Podcast"
,"Instagram","LinkedIn","Twitter","TikTok","Print","Cinema","VOD","OTS","xmedia"))

larger_strings <- c("weights_digital","weights_tv","weights_social","weights_ooh","weights_print",
"weights_appletv")

期望的输出: 这将是选定的输出,因为“appletv”不是 channels 向量的一部分。

not_included <- "weights_appletv"

【问题讨论】:

    标签: r string


    【解决方案1】:

    一个base R选项将在_处拆分较大的字符串,循环遍历strsplitlist输出,检查all的值是否不是%in%通道以对较大的字符串进行子集化

    larger_strings[sapply(strsplit(larger_strings, "_"), (x) all(!x %in% channels))]
    [1] "weights_appletv"
    

    或者作为两列数据框读取,然后 filterif_any 在列上和 unite 过滤其余行

    library(dplyr)
    library(tidyr)
    read.table(text = larger_strings, header = FALSE, sep = "_") %>% 
      filter(!if_any(everything(), ~ .x %in% channels)) %>% 
      unite(V1, V1, V2) %>%
      pull(V1)
    [1] "weights_appletv"
    

    【讨论】:

    • 太棒了,谢谢你,当它让我接受时,我会接受
    猜你喜欢
    • 1970-01-01
    • 2016-03-26
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2017-03-27
    相关资源
    最近更新 更多