我正在使用rentrez
来挖掘PubMed。我想使用saveRDS()
保存下载的XML数据,因为我的实际搜索量约为10k,并且要花一些时间。我可以使用entrez_search()
进行初始搜索,并可以使用entrez_fetch()
下载数据。当我将结果打印到控制台时,它看起来像预期的那样。
## load needed packages
library(rentrez)
library(XML)
library(dplyr)
## set search term and search name for saves
term_set = "transcription AND enhancer AND promoter AND 2018[PDAT]"
search_name = "tNeNpN19982018"
retmax_set = 500
## search PubMed
search <- entrez_search(
db = "pubmed",
term = term_set,
use_history = T
)
## download full XML data for references
XML_refs <- entrez_fetch(
db = "pubmed",
web_history = search$web_history,
rettype = "xml",
parsed = TRUE
)
XML_refs
<PubmedArticle>
<MedlineCitation Status="In-Data-Review" Owner="NLM">
<PMID Version="1">28516428</PMID>
<DateRevised>
saveRDS()
写出一个文件,但只有1kb。当我用XML_refs
删除旧的rm()
并尝试使用loadRDS()
加载数据时,R崩溃,并给我下面的错误。
## write out XML refs as an R data object
saveRDS(XML_refs, paste0(search_name, "_XML_refs.rds"))
rm(XML_refs)
## read back in the XML refs
readRDS("tNeNpN2018_XML_refs.rds")
我在做什么错?有趣的是,如果我在运行上面的saveRDS()
代码(将工作区图像保存到.RData
之后退出R,然后重新启动R,则RStudio环境窗格中列出的XML_refs
的值将从External pointer of class XMLInternalDocument
至<Object with null pointer>
。保存这些XML对象是不可能的吗?