R を使用して PMID の長いリストを使用して PubMED にクエリを実行しています。PubMED にクエリを実行すると、各パブリケーションの XML ファイルから情報が抽出されます。私が最終的に持ちたいのは、次のようなものです。
Original.PMID Publication.type
26956987 Journal.article
26956987 Meta.analysis
26956987 Multicenter.study
26402000 Journal.article
25404043 Journal.article
25404043 Meta.analysis
各パブリケーションには一意の PMID がありますが、各 PMID には複数のパブリケーション タイプが関連付けられている場合があります (上記を参照)。XML ファイルから PMID 番号を照会でき、各 PMID のパブリケーション タイプを取得できます。私が問題を抱えているのは、PMID x の回数を繰り返して、各 PMID がそれぞれのパブリケーション タイプに関連付けられるようにすることです。複数のサブリストを持つリストにデータがない場合 (たとえば、それぞれが独自のデータ フレームとして 14 のバッチがある場合)、親 PublicationType ノードから子ノードの数を取得することで、これを行うことができます。しかし、リスト内でこれを行う方法がわかりません。
これまでの私のコードは次のとおりです。
library(rvest)
library(tidyverse)
library(stringr)
library(regexr)
library(rentrez)
library(XML)
pubmed<-my.data.frame
into.batches<-function(x,n) split(x,cut(seq_along(x),n,labels=FALSE))
batches<-into.batches(pubmed.fwd$PMID, 14)
headings<-lapply(1:14, function(x) {paste0("Batch",x)})
names(batches)<-headings
fwd<-sapply(batches, function(x) entrez_fetch(db="pubmed", id=x, rettype="xml", parsed=TRUE))
trial1<-lapply(fwd, function(x)
list(pub.type = xpathSApply(x, "//PublicationTypeList/PublicationType", xmlValue),
or.pmid = xpathSApply(x, "//ArticleId[@IdType='pubmed']", xmlValue)))
トライアル1は私が問題を抱えているものです。これにより、各バッチ内に pub.type のベクトルと or.pmid のベクトルがありますが、長さが異なるリストが表示されます。
パブリケーションごとにいくつの子パブリケーション タイプがあるかを把握しようとしているので、PMID をその回数繰り返すことができます。私は現在、私が望むことをしない次のコードを使用しています:
trial1<-lapply(fwd, function(x)
list(childnodes = xpathSApply(xmlRoot(x), "count(.//PublicationTypeList/PublicationType)", xmlChildren)))
残念ながら、これはパブリケーション (または pmid) ごとではなく、バッチごとの子ノードの総数を示しているだけです。