スタッカーの手助けをして、Webページを解析してデータフレームとして保存できました。複数のXMLファイルに対して同じ操作を繰り返し、リストをrbindしたいと思います。ここに私が試したし、正常にやったことです:私は、複数のXMLファイルの同じことを行うための関数を適用しようとすると、コードの上データフレーム内のベクトルとrbindに基づいて複数のXMLファイルを解析します
library(XML)
xml.url <- "http://www.ebi.ac.uk/ena/data/view/ERS445758&display=xml"
doc <- xmlParse(xml.url)
x <- xmlToDataFrame(getNodeSet(doc,"//SAMPLE_ATTRIBUTE"))
x$UNITS <- NULL
x_t <- t(x)
x_t <- as.data.frame(x_t)
names(x_t) <- as.matrix(x_t[1, ])
x_t <- x_t[-1, ]
x_t[] <- lapply(x_t, function(x) type.convert(as.character(x)))
は今、うまく機能:
ERS_ID <- c("ERS445758","ERS445759", "ERS445760", "ERS445761", "ERS445762")
xml_url_test = as.vector(sprintf("http://www.ebi.ac.uk/ena/data/view/ERS445758&display=xml",
ERS_ID))
XML_parser <- function(XML_url){
doc <- xmlParse(XML_url)
x <- xmlToDataFrame(getNodeSet(doc,"//SAMPLE_ATTRIBUTE"))
x$UNITS <- NULL
x_t <- t(x)
x_t <- as.data.frame(x_t)
names(x_t) <- as.matrix(x_t[1, ])
x_t <- x_t[-1, ]
x_t[] <- lapply(x_t, function(x) type.convert(as.character(x)))
return(x_t)
}
major_test <- sapply(xml_url_test, XML_parser)
それは動作しますが、提供します私は単一のXMLファイルのために生成した正しいデータフレーム形式ではない長いリストを私に返します。 は最後に、私はまた、機能的にx_t$ERSid <- ERS_ID
ようERS_IDベクトル 何かからERS番号を持って、最終的なデータフレームに列を追加したいと思います
誰かが私が任意のより良いと同様の機能で行方不明です何を指摘することができますタスクを実行する方法は?
ありがとうございます!あなたはこのような何かを行うことができますxml2
とtidyverse
を使用して
こんにちは、お返事ありがとうございます!私はまだ整頓に慣れています あなたのコードを試しました、それは動作します!元の 'ERS445758' idを、対応する解析されたメタデータの列変数としてどのように追加するかを知りたかっただけです。基本的にERS列を追加して 'ERS445758'を追加してください。すべてのERS idのためにSon onなど。 –
'set_names'が出現するThats。あなたはあなたの 'urls'に対応する識別子を表す' identifier'を設定します。列名は 'map_df(...、.id =" myname ")'で定義されます。したがって、上記のコードでは、識別子列 'url'に名前をつけ、例として' A'と 'B'を使用しました:' identifier < - LETTERS [seq_along(urls)] – Rentrop