我正在解析一堆具有类似表格数据的 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
每增加一个新的小部分(10,000+ 次调用)rbindlist
!)。最好创建一长串 data.tables 然后调用rbindlist
once:
ll <- lapply( xml_list , function(x) as.data.table( xmlParse( x ) ) )
dt <- rbindlist( ll )
我想在这种格式下,您的大部分处理时间将花在读取和解析 xml 文件上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)