Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 从R中的PubMed搜索字符串中提取从属关系信息_Html_R_Xml_Dataframe_Pubmed - Fatal编程技术网

Html 从R中的PubMed搜索字符串中提取从属关系信息

Html 从R中的PubMed搜索字符串中提取从属关系信息,html,r,xml,dataframe,pubmed,Html,R,Xml,Dataframe,Pubmed,我需要一些帮助从R中的PubMed搜索字符串中提取从属关系信息。我已经成功地从单个PubMed ID XML中提取了从属关系信息,但是现在我有了一个包含多个术语的搜索字符串,我需要从中提取从属关系信息,希望随后创建一个包含以下列的数据框架:PMID、author、country、state等 这是我目前的代码: my_query <- (PubMed Search String) my_entrez_id <- get_pubmed_ids(my_query) my_abstract

我需要一些帮助从R中的PubMed搜索字符串中提取从属关系信息。我已经成功地从单个PubMed ID XML中提取了从属关系信息,但是现在我有了一个包含多个术语的搜索字符串,我需要从中提取从属关系信息,希望随后创建一个包含以下列的数据框架:PMID、author、country、state等

这是我目前的代码:

my_query <- (PubMed Search String)
my_entrez_id <- get_pubmed_ids(my_query)
my_abstracts_txt <- fetch_pubmed_data(my_entrez_id, format = "abstract")

my\u query您是否尝试过
pubmedR
软件包

所有作者数据都包含在嵌套列表中,
author$AffiliationInfo
列表中(请注意,这是一个列表,因为一个作者可以有多个从属关系)

================================================= 根据评论进行编辑:

首先构造您的请求URL。确保用您的电子邮件地址替换
&电子邮件

library(httr)
library(xml2)

mypmids <- c("32946812", "32921748", "32921727", "32921708", "32911500", 
             "32894970", "32883566", "32880294", "32873658", "32856805",
             "32856803", "32820143", "32810084", "32809963", "32798472")

my_query <- paste0("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=",
                   mypmids,
                   "&retmode=xml&email=MYEMAIL@MYDOMAIN.COM")
接下来,我们使用
read\u xml()
中的
content()
解析请求。请注意,我们正在分析
结果

my_resp <- map(my_req, function(z) {
  read_xml(content(z$result,
                   as = "text",
                   encoding = "UTF-8"))
})

您是否试用过
pubmedR
软件包

所有作者数据都包含在嵌套列表中,
author$AffiliationInfo
列表中(请注意,这是一个列表,因为一个作者可以有多个从属关系)

================================================= 根据评论进行编辑:

首先构造您的请求URL。确保用您的电子邮件地址替换
&电子邮件

library(httr)
library(xml2)

mypmids <- c("32946812", "32921748", "32921727", "32921708", "32911500", 
             "32894970", "32883566", "32880294", "32873658", "32856805",
             "32856803", "32820143", "32810084", "32809963", "32798472")

my_query <- paste0("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=",
                   mypmids,
                   "&retmode=xml&email=MYEMAIL@MYDOMAIN.COM")
接下来,我们使用
read\u xml()
中的
content()
解析请求。请注意,我们正在分析
结果

my_resp <- map(my_req, function(z) {
  read_xml(content(z$result,
                   as = "text",
                   encoding = "UTF-8"))
})

嗨,谢谢你的快速回复!我只是尝试了一下你的建议,但由于某种原因,它根本没有接收到我的搜索字符串。我不确定它是否太长,因此我将继续调整代码/搜索字符串。我的查询也是多个“或”而不是“和”,搜索字符串中可能有太多的内容?再次感谢!你能在这里发布你的搜索字符串吗?嗨,我已经能够从搜索字符串中导出PMID,作为解决这个问题的另一种方法。这大约是10000个PMID,但前几个是30361262 31203996 31141631 31028669 30420752 29601269 31628431 27959731 30499168,如果这有帮助的话!我一直在尝试这样做,因为它似乎类似于在线看到的PubMed R示例。那么你的最终目标是什么?您想在一列中包含pmid,在另一列中包含作者从属关系吗?是的,我之前创建了一个数据框,其中包含:pmid:作者姓名:中心:国家:州我想复制类似的内容。您好,感谢您的快速回复!我只是尝试了一下你的建议,但由于某种原因,它根本没有接收到我的搜索字符串。我不确定它是否太长,因此我将继续调整代码/搜索字符串。我的查询也是多个“或”而不是“和”,搜索字符串中可能有太多的内容?再次感谢!你能在这里发布你的搜索字符串吗?嗨,我已经能够从搜索字符串中导出PMID,作为解决这个问题的另一种方法。这大约是10000个PMID,但前几个是30361262 31203996 31141631 31028669 30420752 29601269 31628431 27959731 30499168,如果这有帮助的话!我一直在尝试这样做,因为它似乎类似于在线看到的PubMed R示例。那么你的最终目标是什么?你想在一列中有一个包含pmid的数据框,在另一列中有作者从属关系吗?是的,我以前创建过一个包含:pmid:作者姓名:中心:国家:州的数据框,我想复制类似的内容。
my_resp <- map(my_req, function(z) {
  read_xml(content(z$result,
                   as = "text",
                   encoding = "UTF-8"))
})
my_pm_list <- map(my_resp, function (z) {
  my_xml <- xml_child(xml_child(z, 1), 1)
  pmid <- xml_text(xml_find_first(my_xml, "//PMID"))
  authinfo <- as_list(xml_find_all(my_xml, ".//AuthorList"))
  return(list(pmid, authinfo))
})

myauthinfo <- map(my_pmids, function(z) {
  auth <- z[[2]][[1]]
})

mytibble <- myauthinfo %>% {
  tibble(
    lastname = map_depth(., 2, pluck, "LastName", 1, .default = NA_character_),
    firstname = map_depth(., 2, pluck, "ForeName", 1, .default = NA_character_),
    affil = map_depth(., 2, pluck, "AffiliationInfo", "Affiliation", 1, .default = NA_character_)
  )
}

my_unnested_tibble <- mytibble %>%
  bind_cols(pmid = map_chr(my_pm_list, pluck, 1)) %>%
  unnest(c(lastname, firstname, affil))