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

使用OpenalexR合并文献集合结果异常,请求技术帮助

解决openalexR文献集合合并问题

问题原因

你用append()函数出错是因为oa_fetch()返回的是tibble(数据框),而append()是用于合并列表的函数,它会把两个tibble的每一列当作列表元素来拼接,所以最终得到的是包含所有列的长列表,而非合并行的tibble。

正确的合并方法

方法1:用dplyr::bind_rows()(推荐)

如果已经分两次下载了独立的tibble,用bind_rows()可以直接按行合并:

library(openalexR)
library(dplyr)

works_from_dois1 <- oa_fetch(
  entity = "works",
  doi = c("10.1080/1369183X.2016.1176906")
)

works_from_dois2 <- oa_fetch(
  entity = "works",
  doi = c("10.1016/j.socnet.2013.11.001")
)

# 按行合并两个tibble
works_from_dois_all <- bind_rows(works_from_dois1, works_from_dois2)

# 查看结果结构
str(works_from_dois_all)

方法2:用基础R的rbind()

基础R的rbind()也能实现行合并,只要两个tibble的列结构一致(openalexR返回的结果通常满足):

works_from_dois_all <- rbind(works_from_dois1, works_from_dois2)

方法3:一次性下载所有DOI(更高效)

其实不需要分两次请求,直接把所有DOI放到同一个向量里一次性下载,就能直接得到合并好的tibble:

library(openalexR)

# 合并DOI向量,一次性下载
all_dois <- c(
  "10.1080/1369183X.2016.1176906",
  "10.1016/j.socnet.2013.11.001"
)

works_from_dois_all <- oa_fetch(
  entity = "works",
  doi = all_dois
)

str(works_from_dois_all)

内容的提问来源于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.04 10:40:14