R语言:筛选出后缀不在指定子串集合中的目标字符串
解决方法:筛选后缀不在指定列表中的字符串元素
这问题其实不难,咱们可以通过提取后缀+匹配判断的方式快速解决,不用复杂的方法,下面是具体步骤和代码:
步骤说明
- 从
larger_strings的每个元素中提取下划线后面的后缀部分; - 将后缀转为小写,和
channels的格式保持一致; - 判断哪些后缀不在
channels列表里,筛选出对应的原字符串元素。
完整代码
# 给定的原始数据 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") # 提取下划线后缀并转小写 suffixes <- tolower(sub(".*_", "", larger_strings)) # 筛选出后缀不在channels中的元素 not_included <- larger_strings[!suffixes %in% channels] # 查看结果 not_included
代码解释
sub(".*_", "", larger_strings):使用正则表达式匹配每个字符串中下划线及之前的所有内容,替换为空后得到下划线后的后缀;tolower():把后缀转为小写,确保和channels的大小写一致,避免匹配误差;!suffixes %in% channels:生成一个逻辑向量,标记哪些后缀不在channels里;- 最后用这个逻辑向量索引
larger_strings,就能得到咱们要的目标元素。
运行代码后,not_included的结果就是"weights_appletv",完全符合你的期望!
内容的提问来源于stack exchange,提问作者megmac
相关产品推荐
相关产品推荐

