Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中解析XML_Xml_R - Fatal编程技术网

在R中解析XML

在R中解析XML,xml,r,Xml,R,我试图将一些数据从XML文件下载并组织到R中。我已经看过了相关的问题和文档,但大多数都是指使用XML包解析函数,这些函数似乎无法理解我的数据。因此,我的两个问题是1)如何让R将实际数据读入数据帧,而不是XML结构并进行标记?2)我可以使用XML代码中的XML结构信息在R中解析它吗 这就是我正在处理的问题(以及我迄今为止失败的尝试): 非常感谢您的想法、建议、建议等。如果你知道另一个堆栈问题,或者我可以使用的教程或示例,那也可以,不要重复。谢谢 这就是你想要的吗 library(XML) data

我试图将一些数据从XML文件下载并组织到R中。我已经看过了相关的问题和文档,但大多数都是指使用XML包解析函数,这些函数似乎无法理解我的数据。因此,我的两个问题是1)如何让R将实际数据读入数据帧,而不是XML结构并进行标记?2)我可以使用XML代码中的XML结构信息在R中解析它吗

这就是我正在处理的问题(以及我迄今为止失败的尝试):

非常感谢您的想法、建议、建议等。如果你知道另一个堆栈问题,或者我可以使用的教程或示例,那也可以,不要重复。谢谢

这就是你想要的吗

library(XML)
datahere = "~/"
setwd(datahere)
download.file("http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009",paste(datahere,"feddata.xml",sep=""))
tt = xmlParse("feddata.xml")
out <- getNodeSet(tt, "//*[name()='out:issue']", fun=xmlToList)
df <- data.frame(do.call(rbind, out))
head(df)

  confidentiality couponRate currency decimals inclusion maturityDate multiplier rate securityType status
1               F      4.750      USD        0      true   2011-01-18          0    P          FMC      A
2               F      4.500      USD        0      true   2011-02-15          0    P          FNM      A
3               F      4.625      USD        0      true   2011-02-18          0    P          FHL      A
4               F      3.250      USD        0      true   2011-02-25          0    P          FMC      A
5               F      5.500      USD        0      true   2011-03-15          0    P          FNM      A
6               F      5.625      USD        0      true   2011-03-15          0    P          FMC      A
      value
1  40000000
2   3000000
3   2000000
4         0
5  49000000
6 155000000
库(XML)
datahere=“~/”
setwd(datahere)
下载文件(“http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009,粘贴(datahere,“feddata.xml”,sep=“”)
tt=xmlParse(“feddata.xml”)

使用
plyr
XML

library(XML)
doc <- xmlParse(
  "http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009"  
)
doc_list <- xmlToList(doc)

library(plyr)
doc_issues <- ldply(doc_list$DataSet$Group, function(d){ 
  if ("issue" %in% names(d)){
    d$issue
  } else {
    NULL
  }
}) 
库(XML)

doc您试图从这个xml文档中提取什么信息?我只是想获得数据的数据观察值,正如Scott和Ramnath在下面所做的那样。在以后的问题中,我会尽量说得更具体一些,但我想这是新事物的困难之一——不知道该问什么问题。啊,我尝试过这种方法,但没能让do.call(rbind)起作用。这是很有帮助的,因为我可以看到我做错了什么,主要是不理解xml文件本身的组织。谢谢奇怪,
do.call
rbind
都在基本的Roh中是的,我不是说函数有问题,我是说我没有正确使用它们。更具体地说,当试图解析XML时,文件顶部不是数据观测值的信息显然无法绑定到观测值。基本上,我无法真正理解如何正确地导航XML,这是您通过“/*[name()='out:issue']”步骤澄清的。我确信这是我缺乏XML结构方面的经验,但是有了您的示例会很有启发性。再次感谢!啊,明白了。玩得开心:)这也很有意思。我需要更加熟悉plyr软件包,但我从来都不知道什么时候该考虑它。非常感谢!
library(XML)
doc <- xmlParse(
  "http://www.newyorkfed.org/markets/pomo/xml/v3_0/pomoXML.cfm?SHOWMORE=TRUE&date1=01/01/2009&date2=01/10/2009"  
)
doc_list <- xmlToList(doc)

library(plyr)
doc_issues <- ldply(doc_list$DataSet$Group, function(d){ 
  if ("issue" %in% names(d)){
    d$issue
  } else {
    NULL
  }
})