使用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
相关产品推荐
相关产品推荐

