R语言 慎用rbind

标签:
it |
分类: R语言 |
R语言用了这么久,经常在使用过程中使用rbind,觉得rbind这个函数挺好的,可以直接将数据框上下拼接。从来没有考虑过其效率问题。年前写了一个脚本,数据达到了千万行。习惯性的使用rbind来收集数据,这个脚本从年前到年后都没运行完,让我大伤脑筋,到底是R效率低下还是我的算法拙劣呢?
http://s7/mw690/001aVrkety6GEUHoa1g66&690慎用rbind" TITLE="R语言
在多次修改算法后,我开始怀疑rbind函数的效率了。
脚本的主要意思比较两种方法的运行时间:
方法1:直接生成data.frame,然后再用rbind拼接data.frame
方法2:先生成向量,再在循环最后使用data.frame生成数据框
结果显示,当数据量增大时,rbind会耗费大量时间,而data.frame可以节约大量时间。
脚本如下:
m = seq(from=1000,to=10000,by=1000)
rb = d = NULL
for (n in m){
start = Sys.time()
a = b = c =NULL
r = NULL
for( i in 1:n)
{
}
end = Sys.time()
rb = c(rb,(end - start))
start = Sys.time()
a = b = c =NULL
r = NULL
for( i in 1:n)
{
}
r = data.frame(a,b,c)
end = Sys.time()
d = c(d, (end - start))
}
print(data.frame(rb,d))