为何R包rAltmetric从CRAN移除?求替代方法获取Altmetric分数
rAltmetric从CRAN移除的原因及替代方案
移除原因
CRAN移除包的核心原因通常是维护停滞:rAltmetric长期未进行版本更新,无法适配新版R语言、依赖包的变更,或是不符合CRAN的包质量规范(比如自动化测试失败、文档缺失等),最终被CRAN清理下架。这类第三方API封装包很容易因为上游API调整或维护中断,失去在CRAN上留存的资格。
替代方法
1. 直接调用Altmetric官方API
这是最灵活可靠的方案,用httr包发送HTTP请求即可实现:
library(httr) # 示例:通过DOI获取单篇论文的Altmetric数据 target_doi <- "10.1038/nature12345" api_url <- paste0("https://api.altmetric.com/v1/doi/", target_doi) response <- GET(api_url) # 解析返回的JSON数据 altmetric_result <- content(response, "parsed") # 提取Altmetric分数 if (!is.null(altmetric_result$score)) { cat("Altmetric分数:", altmetric_result$score, "\n") } else { cat("未找到对应数据\n") }
如果需要批量调用或更高的请求限额,可以去Altmetric官网申请免费API密钥,请求时在URL中加入?key=你的密钥参数即可。
2. 使用其他维护中的R包
rcrossref:通过CrossRef获取论文元数据时,部分结果会包含Altmetric的关联链接或基础计量字段;fulltext:支持从多个数据源获取论文内容及关联计量数据,可间接对接Altmetric信息。
3. 批量处理实现
如果需要批量获取多篇论文的Altmetric数据,推荐用purrr包实现批量请求,同时注意控制请求频率避免触发API限流:
library(purrr) library(httr) doi_list <- c("10.1038/nature12345", "10.1016/j.cell.2023.01.001") get_altmetric_score <- function(doi) { api_url <- paste0("https://api.altmetric.com/v1/doi/", doi) response <- GET(api_url) result <- content(response, "parsed") return(list(doi = doi, score = result$score %||% NA)) } # 批量获取并整理结果 batch_results <- map_dfr(doi_list, get_altmetric_score) print(batch_results)
内容的提问来源于stack exchange,提问作者iGada
相关产品推荐
相关产品推荐

