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
相关产品推荐
相关产品推荐

