4
変数 "varname
"の値にXML
パッケージを使用して大量のxmlファイルを解析しています。私が使用していたコードは次のとおりです。ループを使用しないXMLファイルの解析?
library(XML)
a = xmlTreeParse("/path/filename.xml")
r = xmlRoot(a)
namelist = list()
for(i in 1:xmlSize(r)){namelist[[i]] <- xmlValue(xmlChildren(r[[i]])$varname)}
これを実行するのに長い時間がかかっているので、私は並列処理を試してみました:
library(foreach)
library(doMC)
registerDoMC()
namelist = list()
namelist <- foreach(i = 1:xmlSize(r)) %dopar% {namelist[[i]] <- xmlValue(xmlChildren(r[[i]])$varname)}
これは高速ですが、それでも十分な大きさのために私のマシンをフリーズされますファイル。この問題を回避する方法はありますか?
あなたは大規模な文書のために非効率的である 、文書全体のためのDOMツリーを構築している: が明示的に物事をスピードアップすることがあり、必要な情報を抽出し、他のすべてを廃棄する 'xmlTreeParse'の' handlers'引数を設定します。 –
Vincent ...申し訳ありませんが、私はXMLに慣れておらず、Rのドキュメントとともに混乱しています。サンプルコードを提供してください。ありがとう。 – user702432
あなたのデータがどのようなものであるかについての詳細は何もなく、より具体的にするのは難しいです。 ここでは、ドキュメントの一例を示します(簡略化しています)。 'fileName < - system.file(" exampleData "、" mtcars.xml "、package =" XML "); r < - 文字(0)。 f < - function(x、attrs){r << - c(r、xmlValue(x [[1]])); TRUE}; xmlTreeParse(fileName、ハンドラ=リスト(変数= f)、asTree = FALSE); r' –