求教各位大虾:
我用R处理一组数据,其中一部分的中间运算结果是形如(k1,v1),(k1,v2),(k2,v2),(k2,v3),(k1,v1)...的vector,不同vector间、vector内部的元素间都会有重复。现在我要整理K和V之间的对应关系,对应前面的例子,我要得到的结果是下面的list:(k1=c(v1,v2),k2=c(v2,v3)...)。假设k和v分别为要处理的一组(k,v)vector,lstResult是最终保留结果的list对象,我用R来处理的过程是:
#如果k在lstResult还没有出现,添加该组结果
if (length(lstResult[[k]]) == 0){
lstResult[[k]] <- c(v)
}
#如果k在lstResult中已经出现过了,判断v是否出现在其对应的vector中,如果没有则添加进去
else{
if ((v %in% lstResult[[k]]) == FALSE){
lstResult[[k]] <- append(lstResult[[k]], v)
}
}
程序很简单,但处理约50万组数据,在我64G内存的服务器上居然要花4~5个小时!
同样的实现过程,我把中间结果写入文件,然后用python的list和dict对象处理,文件读完后处理了不到2分钟就结束了。
由于我的预处理、建模都是用R来做的,如果整个用python实现一遍太麻烦;但每个中间结果都导出来用python处理,还得把处理后的结果在导出文件读入R,也不现实。
请大家看看是不是我什么地方没处理好?我觉得二者的性能不该有这么大的差距啊!


雷达卡





京公网安备 11010802022788号







