gpt4 book ai didi

xml - 提高将行附加到 data.table 的性能

转载 作者:行者123 更新时间:2023-12-05 04:15:42 24 4
gpt4 key购买 nike

我正在解析一堆具有类似表格数据的 XML,并希望将它们连接到一个 data.table 中以便之后进行计算。我使用 XML 包进行解析,有大约 10,000 个要解析的 xml 文件,每个文件里面有 15-150 行(具体数字我事先不知道)。我目前的做法是:

sol <- data.table()
for(i in seq_len(length(xml_list))) {
i.xml <- xmlParse(xml_list[[i]]
i.component <- as.data.table(xmlToDataFrame(..))
sol <- rbindlist(list(i.component,sol),use.names=T,fill=T)
}
sol

此过程对我的数据大约需要一个小时。有人可以指出一种方法来显着提高这种解析的性能吗?

我考虑的可能方法是:以某种方式为较大的 data.table 预分配内存并附加行,而不是在每个步骤中重新复制整个内容?或者我可以使用更快的 XML 解析器?或者可能同时而不是按顺序解析列表中的 XML(因为它们都是相似的)。

最佳答案

您递归地rbinding您不断增长的data.table,每个新的小添加(对rbindlist 的10,000 多次调用!)。最好创建一长串 data.tables,然后调用 rbindlist 一次:

ll <- lapply( xml_list , function(x) as.data.table( xmlParse( x ) ) )
dt <- rbindlist( ll )

我想在这种格式下,您的大部分处理时间将花费在读取和解析 xml 文件上。

关于xml - 提高将行附加到 data.table 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com