R语言scholar包get_impactfactor返回错误期刊名与影响因子问题排查
scholar包
get_impactfactor()函数匹配错配问题 复现场景
调用scholar::get_impactfactor()函数时,传入三个学术界通用的期刊名称标识"JAMA"、"Kidney Int"、"American Society of Nephrology",在不同max.distance参数配置下,均返回了与输入不匹配的期刊名称、影响因子数值,具体运行表现如下:
- 设置
max.distance = .1时的输出:
scholar::get_impactfactor(c("JAMA", "Kidney Int", "American Society of Nephrology"), max.distance = .1) #> # A tibble: 3 x 4 #> Journal Cites ImpactFactor Eigenfactor #> <chr> <dbl> <dbl> <dbl> #> 1 CA-A CANCER JOURNAL FOR CLINICIANS 28839 245. 0.0660 #> 2 CA-A CANCER JOURNAL FOR CLINICIANS 28839 245. 0.0660 #> 3 CA-A CANCER JOURNAL FOR CLINICIANS 28839 245. 0.0660
- 设置
max.distance = .5时的输出:
scholar::get_impactfactor(c("JAMA", "Kidney Int", "American Society of Nephrology"), max.distance = .5) #> # A tibble: 3 x 4 #> Journal Cites ImpactFactor Eigenfactor #> <chr> <dbl> <dbl> <dbl> #> 1 LANCET 233269 53.3 0.436 #> 2 NATURE REVIEWS GENETICS 35680 41.5 0.0943 #> 3 NATURE 710766 41.6 1.36
- 设置
max.distance = .8时的输出:
scholar::get_impactfactor(c("JAMA", "Kidney Int", "American Society of Nephrology"), max.distance = .8) #> # A tibble: 3 x 4 #> Journal Cites ImpactFactor Eigenfactor #> <chr> <dbl> <dbl> <dbl> #> 1 JAMA-JOURNAL OF THE AMERICAN MEDICAL ASSOCIAT~ 148774 47.7 0.300 #> 2 JOURNAL OF THE AMERICAN SOCIETY OF NEPHROLOGY 37796 8.65 0.0568 #> 3 Annual Review of Nutrition 5528 8.89 0.00523
上述可复现代码由R语言reprex包v1.0.0于2021-03-02生成。
错配原因
max.distance参数控制字符串模糊匹配的宽松阈值,数值越小匹配规则越严格。当阈值为.1、.5时,因为匹配严格度过高,函数无法找到对应期刊条目,会自动返回内置影响因子库中排名最靠前的高分期刊作为兜底结果,因此出现三行返回值完全相同、和输入期刊毫无关联的情况。- 即使把阈值放宽到.8,模糊匹配依然存在固有偏差:
- 输入的
"Kidney Int"是期刊《国际肾脏》的通用缩写,函数没有内置缩写映射规则,因此误匹配到同领域的《美国肾病学会杂志》 - 输入的
"American Society of Nephrology"是学术机构名称,本身不是期刊名,因此被误匹配到完全不相关的《营养学年评》
- 输入的
- 函数的匹配逻辑是基于内置库中的期刊全称计算字符串编辑距离,对学术界通用缩写、非期刊类机构名没有专门的映射规则,仅靠调整匹配阈值无法实现100%精准命中。
优化方案
- 输入参数时优先使用期刊标准全称替代通用缩写或机构名:
- JAMA对应标准全称:
"JAMA-Journal of the American Medical Association" - Kidney Int对应标准全称:
"Kidney International" - 原输入的美国肾病学会机构名不属于期刊范畴,若需查询该学会主办的期刊,需替换为对应期刊名
"Journal of the American Society of Nephrology"
- JAMA对应标准全称:
- 模糊匹配阈值建议设置在.6-.7区间,平衡缩写容错能力和匹配准确率,避免阈值过高引入完全不相关的错配结果
- 获取返回结果后逐行核对
Journal字段内容,确认匹配结果和预期一致后再使用对应的影响因子数值。
内容的提问来源于stack exchange,提问作者Zhiqiang Wang
相关产品推荐
相关产品推荐

