xml – 列表中的数据帧列表

前端之家收集整理的这篇文章主要介绍了xml – 列表中的数据帧列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我必须处理一个名为ul的丑名单,如下所示:
[[1]]
[[1]]$param
     name     value 
"Section"       "1" 

[[1]]$param
   name   value 
"field"     "1" 

[[1]]$param
          name          value 
"final answer"            "1" 

[[1]]$param
    name    value 
"points"   "-0.0" 


[[2]]
[[2]]$param
     name     value 
"Section"       "1" 

[[2]]$param
   name   value 
"field"     "2" 

[[2]]$param
          name          value 
"final answer"            "1" 

[[2]]$param
    name    value 
"points"    "1.0" 


[[3]]
[[3]]$param
     name     value 
"Section"       "1" 

[[3]]$param
   name   value 
"field"     "3" 

[[3]]$param
          name          value 
"final answer"        "0.611" 

[[3]]$param
    name    value 
"points"    "1.0"

我想将列表转换成一个简单的数据框,即@H_301_4@

Section    field    final answer    points
      1        1               1      -0.0
      1        2               1       1.0
      1        3           0.611       1.0

有没有直接的方法来实现呢?或者我必须单独访问每个列表并将其绑定到数据框?@H_301_4@

数据是从一个更加恶劣的xml文件导入的,所以如果有人想玩它,那里有一个链接RData file.对不起,没有可重现的代码.非常感谢你.@H_301_4@

可能有更好的解决方案,但这应该让你开始.首先,我们加载一些库
R> library(plyr)
R> library(reshape2)

然后分两部分处理你的列表.@H_301_4@

##lapply applies ldply to each list element in turn
ul1 = lapply(ul,ldply)

##We then do the same again
dd = ldply(ul1)[,2:3]

接下来我们根据列表顺序对输出进行标号@H_301_4@

R> dd$num = rep(1:3,each=4)

然后我们从长格式转换为宽格式@H_301_4@

R> dcast(dd,num ~ name)

  num field final answer points Section
1   1     1            1   -0.0       1
2   2     2            1    1.0       1
3   3     3        0.611    1.0       1

猜你在找的XML相关文章