我想将数据框导出为XML格式。在数据框中 - “结果”我有两列和两行 我使用这段代码:
xmlNode("data",.children=lapply(names(results),function(n){xmlNode(n,results[[n]])}))
我的结果好坏参与:
<data> <time>2013-10-27 13:00:002013-10-27 13:00:00</time>
<p_value>0.990.79</p_value> </data>`
两行输入到同一XML节点。 我将有超过2行,所以我希望能够为每一行获得分离的XML格式,如:
<data>
<time>2013-10-27 13:00:00</time>
<p_value>0.99</p_value>
</data>
下一行看起来像这样:
<data>
<time>2013-10-27 13:00:00</time>
<p_value>0.79</p_value>
</data
我的问题是如何以XML格式分隔行?
答案 0 :(得分:0)
让我们从一些虚拟数据开始:
dt <- data.frame( x = 1:10, y = LETTERS[1:10] )
在您的示例中,您正在申请data.frame列(使用lapply
),尽管您解释说,您更愿意应用于行。然后它看起来像这样:
xmlNode( "data", .children = apply(
dt, 1, function(n){
xmlNode( "row",
xmlNode( names(dt)[1], n[1] ),
xmlNode( names(dt)[2], n[2] )
)
}
))
<data>
<row>
<x> 1</x>
<y>A</y>
</row>
<row>
<x> 2</x>
<y>B</y>
...
如果您正在寻找更通用的解决方案,将任意data.frame
转换为xml节点,您可以使用此解决方案:
library(plyr)
xmlNode( "data", .children =
alply( results, 1, function(row)
xmlNode( "row", 1, .children = alply( row , 2, function(cell) xmlNode( names(cell), cell ) ) )
)
)