Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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
解析data.frame中的XML单列_R_Xml_Dplyr - Fatal编程技术网

解析data.frame中的XML单列

解析data.frame中的XML单列,r,xml,dplyr,R,Xml,Dplyr,我得到的数据是data.frame,但其中一列包含一个单元格,每个单元格包含几个xml元素 像这样的 label_col = c("A", "B") number_col = c(123, 456) XML_col = c("<CD><TITLE>Empire Burlesque</TITLE><ARTIST>Bob Dylan</ARTIST></CD><CD&g

我得到的数据是data.frame,但其中一列包含一个单元格,每个单元格包含几个xml元素

像这样的

label_col = c("A", "B")

number_col = c(123, 456)

XML_col = c("<CD><TITLE>Empire Burlesque</TITLE><ARTIST>Bob Dylan</ARTIST></CD><CD><TITLE>Hide your heart</TITLE><ARTIST>Bonnie Tyler</ARTIST></CD>", 
             "<CD><TITLE>ABC</TITLE><ARTIST>XYZ</ARTIST></CD><CD><TITLE>EFG</TITLE><ARTIST>UVW</ARTIST></CD></CATALOG>")

Sample_df = data.frame(label_col, number_col, XML_col)
标签c(“A”、“B”) 编号=c(123456) XML_col=c(“帝国城堡”Bob DylanHide your heartBonnie Tyler), “ABCXYZEFGUVW”) Sample\u df=data.frame(标签、数字、XML) 现在我可以看到每个单元格中的XML不是由一对标记包含的,所以我添加了它们

library(dplyr)

Sample_df %>%
mutate(XML_col = paste0("<Data>",XML_col,"</Data>"))
库(dplyr)
样本_df%>%
mutate(XML\u col=paste0(“,XML\u col,”))
现在,由于每个XML元素包含多(2)个项目,我希望我的数据帧从2x3变为4x4(列为……label\u col、number\u col、TITLE、ARTIST)

我卡住了!我尝试使用unnest和unnest_的时间更长了,但我真的不知道该怎么做

关于xml解析的大多数示例似乎都是从xml文件开始的,而不是上面提到的混合文件

谁能给我一头牛吗?(不要说哞!)


非常感谢

我将假设不匹配的
标记只是一个输入错误,您的实际输入是经过验证的、格式良好的XML

一般步骤如下:

  • 将字符串解析到R类
    xml\u文档中
  • 将目标节点提取为列表列
  • 取消列出列表列
  • 下面演示了如何为
    标题
    节点执行此操作,但也应该为其他节点轻松复制

    库(dplyr)
    图书馆(purrr)
    库(xml2)
    图书馆(tidyr)
    
    label_col@Markus我花了一点时间才回到问题上来,但你的解决方案非常有效。非常感谢!