RefManageR と PubMed ID (pmids) を使用して、PubMed から引用情報を取得しようとしています。
RefManageR を選択したのは、出力を data.frame 形式で貼り付けるのが非常に簡単だからです。そして私にとって、PubMed API を自分で理解して使用することは依然として困難です。
「PMIds の文字列」を入力として使用してデータを取得するコードを作成できました。
require(RCurl)
urli <- getURL("https://gist.githubusercontent.com/aurora-mareviv/3840512f6777d5293218/raw/dfd6b76ceb22c52aa073fc05211dcea986406914/pmids.csv", ssl.verifypeer = FALSE)
pmids <- read.csv(textConnection(urli))
head(pmids)
index10 <- pmids$pmId[1:10]
indice10 <- paste(pmids$pmId[1:10], collapse=" ")
# install.packages("RefManageR")
library(RefManageR)
auth.pm10 <- ReadPubMed(indice10, database = "PubMed", mindate = 1950)
auth.pm10d <- data.frame(auth.pm10)
View(auth.pm10)
ただし、500 pmids から引用を取得したい場合は、PubMed サーバーで長いクエリを避ける必要があると思います。私の考えは、次のindex10
ように、 vector 内のすべての要素をループする関数を作成することです。
extract.pub <-
function(id=indice, dbase=d.base, mindat=1950){
require(RefManageR)
indice <- id # Author
d.base <- dbase # like PubMed, etc
min.dat <- mindat # Date from...
auth.pm <- NULL
for(i in indice){
auth.pm <- ReadPubMed(indice, database = d.base, mindate = min.dat)
}
auth.pm <- data.frame(auth.pm)
auth.pm
}
cites <- extract.pub(index10, dbase="PubMed")
View(cites)
次のエラーが発生しますError : Internal server error
。
ただし、 (ベクター)indice10
の代わりに (文字列)を挿入すると、次のように機能します。index10
cites <- extract.pub(indice10, dbase="PubMed")
View(cites)
このループを機能させるにはどうすればよいですか? それとも、このアプローチは私の目的には最適ではないでしょうか?