使用下一个代码:
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的结果不一样,为什么?
由于
答案 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