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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:05:05