如何用R包rcrossref从DOI获取文献记录类型?
解决方法
你用错函数了——cr_types()根本不是用来查询单个DOI的文献类型的,它的作用是返回Crossref支持的所有文献类型枚举列表。要获取特定DOI的文献类型,应该用cr_works()函数,它能拉取完整的文献元数据,其中包含你需要的type字段。
单个DOI的处理示例
library(rcrossref) # 获取目标DOI的元数据 doi_meta <- cr_works(doi = "10.1109/TASC.2010.2088091") # 提取文献类型字段 document_type <- doi_meta$data$type # 输出结果 document_type
运行后会得到类似journal-article的结果,对应期刊论文类型。
批量处理多个DOI的示例
如果有一组DOI需要批量处理,可以用循环或者purrr包来高效生成类型向量:
# 示例DOI向量 doi_list <- c( "10.1109/TASC.2010.2088091", "10.1038/nature12373", "10.1007/978-3-319-19770-2" ) # 方法1:用base R的sapply type_vector <- sapply(doi_list, function(doi) { cr_works(doi = doi)$data$type }) # 方法2:用purrr包更简洁(需先安装purrr) # install.packages("purrr") library(purrr) type_vector <- map_chr(doi_list, ~cr_works(doi = .x)$data$type) # 查看结果 type_vector
补充说明
Crossref返回的type字段是标准化值,常见对应关系:
journal-article:期刊论文book:图书book-chapter:专著章节conference-proceeding:会议论文
如果想查看所有支持的类型,直接运行cr_types()不带参数即可。
内容的提问来源于stack exchange,提问作者Richard Heidler
相关产品推荐
相关产品推荐

