2015-07-19 3 views
0

У меня есть XML-файл, который я проанализировал в R и должен его прочитать и преобразовать в кадр данных, который впоследствии может быть организован идентификатором строки. Этот XML-файлПреобразование XML и преобразование данных в R

<tags> 
<row Id="1" TagName="bayesian" Count="1342" ExcerptPostId="20258" WikiPostId="20257"/> 
<row Id="2" TagName="prior" Count="168" ExcerptPostId="62158" WikiPostId="62157"/> 
<row Id="3" TagName="elicitation" Count="6"/> 
<row Id="4" TagName="normality" Count="191" ExcerptPostId="67815" WikiPostId="67814"/> 
<row Id="5" TagName="open-source" Count="13"/> 
</tags> 

Я попытался с помощью XMLparse

Tags_data <- xmlParse("../Tags.xml",useInternalNodes = True) 
xml_Data <- xmlToList(Tags_data) 
ldply(xml_Data,data.frame) 

Каким-то образом это дает мне ошибки и строки, не преобразуются в data.frame.

+0

Ошибка Я получаю: «Ошибка в xmlParse (xml, useInternalNodes = True): объект« True »не найден». Истина должна быть «TRUE» – scoa

ответ

1

Логическое значение TRUE всегда должно быть прописным в R. Кроме того, для того, чтобы вывести data.frame с одной строки на наблюдения, вы должны использовать rbind, а не data.frame в ldply:

library(XML) 
library(plyr) 
xml <- '<tags> <row Id="1" TagName="bayesian" Count="1342" ExcerptPostId="20258" WikiPostId="20257"/> 
    <row Id="2" TagName="prior" Count="168" ExcerptPostId="62158" WikiPostId="62157"/> 
    <row Id="3" TagName="elicitation" Count="6"/> 
    <row Id="4" TagName="normality" Count="191" ExcerptPostId="67815" WikiPostId="67814"/> 
    <row Id="5" TagName="open-source" Count="13"/> 
    </tags>' 

Tags_data <- xmlParse(xml,useInternalNodes = TRUE) 
xml_Data <- xmlToList(Tags_data) 

ldply(xml_Data,rbind) 

    .id Id  TagName Count ExcerptPostId WikiPostId 
1 row 1 bayesian 1342   20258  20257 
2 row 2  prior 168   62158  62157 
3 row 3 elicitation  6   <NA>  <NA> 
4 row 4 normality 191   67815  67814 
5 row 5 open-source 13   <NA>  <NA> 
0

Вы можете также использовать xmlAttrsToDataFrame на рядных узлах

doc <- xmlParse(xml) 
XML:::xmlAttrsToDataFrame(doc["//row"]) 
    Id  TagName Count ExcerptPostId WikiPostId 
1 1 bayesian 1342   20258  20257 
2 2  prior 168   62158  62157 
3 3 elicitation  6   <NA>  <NA> 
4 4 normality 191   67815  67814 
5 5 open-source 13   <NA>  <NA> 
Смежные вопросы