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

在含新闻内容的DataFrame中匹配另一DataFrame的企业名称

解决方法

首先得把你的企业名称数据框转换成字符向量,因为data.frame没法直接用于文本匹配:

# 提取企业名称为字符向量,同时去除前后空格
comp_vec <- trimws(as.character(comp_names[[1]]))

接下来分两种常用实现方式:

基础R原生方法

用grepl结合正则表达式批量匹配,推荐加上单词边界\\b避免部分匹配(比如防止"腾讯"误匹配"腾讯科技",不需要的话可以去掉):

# 拼接正则匹配模式:用|分隔所有企业名称,加上单词边界
match_pattern <- paste0("\\b", comp_vec, "\\b", collapse = "|")
# 逐行扫描新闻文本,生成逻辑向量(ignore.case = TRUE 忽略大小写,可选)
match_result <- grepl(match_pattern, news_df$新闻文本列名, ignore.case = TRUE)

stringr包简化实现

如果习惯用tidyverse工具链,stringr的str_detect更直观:

library(stringr)
# 拼接匹配模式
match_pattern <- str_c("\\b", comp_vec, "\\b", collapse = "|")
# 生成逻辑向量,支持忽略大小写
match_result <- str_detect(news_df$新闻文本列名, regex(match_pattern, ignore_case = TRUE))

注意事项

  • 如果企业名称包含正则特殊字符(比如.、*、+),需要先转义:
    # 转义正则元字符
    comp_vec_escaped <- gsub("([.|*+?^${}()\\[\\]\\\\])", "\\\\\\1", comp_vec)
    # 再用转义后的向量拼接模式
    match_pattern <- paste0("\\b", comp_vec_escaped, "\\b", collapse = "|")
    
  • 如果不需要严格的单词匹配(比如允许"阿里"匹配"阿里巴巴"),直接去掉模式中的\\b即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:24:53