You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中筛选非空列表ID及AhoCorasickTrie匹配问题

筛选AhoCorasickSearch结果中非空列表的行ID

嘿,我看你已经用AhoCorasickTrie包完成了关键词匹配,现在需要从返回的SearchNew列表里找出那些有匹配结果(非空列表)的行索引对吧?这事儿不难,咱们直接通过判断每个子列表的长度来筛选就行:

Base R 实现方式

用基础R的sapply遍历SearchNew,判断每个子列表是否非空,再用which提取对应的索引:

# 获取所有非空匹配结果的行ID
non_empty_match_ids <- which(sapply(SearchNew, function(sub_list) length(sub_list) > 0))

Tidyverse 风格实现(依赖purrr包)

如果你平时习惯用tidyverse的工具,用purrr的map_lgl可以更简洁地完成判断:

library(purrr)
non_empty_match_ids <- which(map_lgl(SearchNew, ~ length(.x) > 0))

额外小提醒

我注意到你的关键词里写的是"8 "(带空格),但你的data[,1]是数值类型的列,这可能会导致匹配不到目标行哦!如果你的需求是匹配数值8,建议把关键词改成"8",或者先把数据列转换成字符类型再搜索,比如:

# 先将第1列转为字符型再执行搜索
SearchNew <- AhoCorasickSearch(c("13","8"), as.character(data[,1]))

这样调整后,就能正确匹配到数值为8的行啦。

内容的提问来源于stack exchange,提问作者caroline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:16:16