D'habitude, je suggère d'essayer la fonction xmlToDataFrame()
, mais je crois que ce sera en fait assez difficile, car il n'est pas bien structuré pour commencer.
Je recommande de travailler avec cette fonction:
xmlToList(books)
Un problème est qu'il ya plusieurs auteurs par livre, vous aurez donc besoin de décider comment gérer que lorsque vous structurez votre trame de données. Une fois que vous avez décidé quoi faire avec le problème des auteurs multiples, il est assez simple de transformer votre liste de livres en un cadre de données avec la fonction ldply()
dans plyr (ou simplement utiliser lapplication et convertir la valeur de retour en données . .frame en utilisant do.call ("rbind" ...)
Voici un exemple complet (auteur exclusion):.
library(XML)
books <- "w3schools.com/xsl/books.xml"
library(plyr)
ldply(xmlToList(books), function(x) { data.frame(x[!names(x)=="author"]) })
.id title.text title..attrs year price .attrs
1 book Everyday Italian en 2005 30.00 COOKING
2 book Harry Potter en 2005 29.99 CHILDREN
3 book XQuery Kick Start en 2003 49.99 WEB
4 book Learning XML en 2003 39.95 WEB
est ici à quoi il ressemble avec l'auteur inclus Vous devez utiliser ldply
dans ce cas, puisque la liste est "dentelée" ... lapply ne peut pas gérer cela correctement. [Sinon, vous pouvez utiliser lapply
avec rbind.fill
(également avec la permission de Hadley), mais pourquoi s'embêter quand plyr
il fait automatiquement pour vous]:
ldply(xmlToList(books), data.frame)
.id title.text title..attrs author year price .attrs
1 book Everyday Italian en Giada De Laurentiis 2005 30.00 COOKING
2 book Harry Potter en J K. Rowling 2005 29.99 CHILDREN
3 book XQuery Kick Start en James McGovern 2003 49.99 WEB
4 book Learning XML en Erik T. Ray 2003 39.95 WEB
author.1 author.2 author.3 author.4
1 <NA> <NA> <NA> <NA>
2 <NA> <NA> <NA> <NA>
3 Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan
4 <NA> <NA> <NA> <NA>
« mais pourquoi pris la peine quand plyr il le fait automatiquement pour vous » je me trouve en disant qu'énormément . –
Question: dans mon cas, le code produit une erreur "Impossible de charger la ressource HTTP Erreur: 1: Echec du chargement de la ressource HTTP". Pourquoi donc? – user2006697
@ user2006697 le lien est déplacé vers: "http://www.w3schools.com/xsl/books.xml" – zyurnaidi