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

如何基于grepl匹配条件连接两个R dataframe,解决fuzzy_join使用报错

报错原因

  • 你给match_fun传的是字符串格式的运算符/函数名,fuzzy_join要求传入实际的函数对象,不能加引号
  • grepl的默认参数顺序是grepl(匹配模式, 被搜索文本),直接传grepl的话参数顺序是反的:第二个匹配规则对应df1$fullnames(第一个入参)、df2$lastnames(第二个入参),我们要判断的是lastnames是否包含在fullnames里,需要调整参数顺序。

正确实现代码

先确保你已经安装加载了fuzzyjoin包:

# 安装包(首次使用执行)
install.packages("fuzzyjoin")
# 加载包
library(fuzzyjoin)

# 正确的左连接代码
joined_dfs <- fuzzy_join(
  df1, df2,
  by = c("ages" = "ages", "fullnames" = "lastnames"),
  match_fun = list(`==`, function(x, y) grepl(y, x)),
  mode = "left"
)

# 可选:整理输出字段,只保留需要的列
joined_dfs <- joined_dfs[, c("fullnames", "ages.x", "lastnames", "homestate")]
colnames(joined_dfs)[2] <- "ages"

输出结果预览

运行后得到的结果完全符合需求:

fullnames ages lastnames homestate
1       Jane Doe   30       Doe        NJ
2 Mr. John Smith   51     Smith        MA
3 Nate Cox, Esq.   45       Cox        CT
4   Bill Lee III   38       Lee        NY
5 Ms. Kate Smith   20     Smith        MA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:00