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

R语言fuzzyjoin包stringdist_inner_join的by参数使用变量问题

fuzzyjoin by参数使用变量指定匹配列解决方案

错误原因

你之前尝试的写法如by = c(Column1 = Column2)无法生效,是因为R会将命名向量左侧的标识符视为字面量名称,而非解析对应变量存储的字符串值,相当于你实际传入的匹配规则是c("Column1" = "Full.Name2"),框架在左表中找不到Column1列就会抛出找不到列的报错。

正确写法

使用base R自带的setNames()函数构造命名匹配向量即可,无需额外依赖包:

# 已定义的列名变量
Column1 <- "Full.Name1"
Column2 <- "Full.Name2"

# 构造匹配规则:向量名为左表列名,向量值为右表列名
match_cols <- setNames(nm = Column1, object = Column2)

JoinedRecs <- DataToUse1 %>%
    stringdist_inner_join(DataToUse2, by = match_cols, max_dist = 2)

也可以直接把setNames()写在参数中简化代码:

JoinedRecs <- DataToUse1 %>%
    stringdist_inner_join(DataToUse2, by = setNames(Column2, Column1), max_dist = 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:03