R的XML示例不起作用 - xmlToDataFrame

时间:2011-05-08 11:55:07

标签: xml r

使用下一个代码:


library(XML)

f = system.file("exampleData", "size.xml", package = "XML")
doc = xmlParse(f)
z = xmlToDataFrame(f, colClasses = list("integer", "integer", "numeric"))
y = xmlToDataFrame(nodes = xmlChildren(xmlRoot(doc)[["size"]]))

browser()

我得到了这些结果:

Browse[1]> z
  age sex number
1   0   0    500
2   0   1    300
3   1   0    200
4   1   1    400
5  10   0     NA
Browse[1]> y
  text
1    0
2    0
3  500

这是从包帮助和手册后,有什么不对?对于z,y的结果不一样,为什么?

由于

1 个答案:

答案 0 :(得分:1)

您没有复制整个示例。当我从示例中复制这两行时,我得到相同的错误,但是当我从?xmlToDataFrame复制整个示例时没有错误。

(我已经完成了两次,我还没有弄清楚哪些参数没有被正确传递,所以我的工作假设是某些连接没有正确建立。)

EDIT; (现在是一个完全不同的问题) 因为根不同于整个文件:

> xmlRoot(doc)[["size"]]
<size>
  <age>0</age>
  <sex>0</sex>
  <number>500</number>
</size> 

EDIT2:您不需要指定colClasses:

>  xmlToDataFrame(f)
  age sex number
1   0   0    500
2   0   1    300
3   1   0    200
4   1   1    400
5  10   0   <NA>

如果你想要从前五行数据中猜测类的read.table行为,那么你可以进行write / read.table操作:

> write.table(xmlToDataFrame(f), file="test.txt", quote=FALSE)
> read.table(file="test.txt")
> str(read.table(file="test.txt"))
'data.frame':   5 obs. of  3 variables:
 $ age   : int  0 0 1 1 10
 $ sex   : int  0 1 0 1 0
 $ number: int  500 300 200 400 NA