【发布时间】:2019-08-20 23:27:08
【问题描述】:
这些天我是编程和使用R 的新手,为了将新值连接到结果向量,我一直在使用
values = sample(letters, 1e4, replace=TRUE)
result_vector = NULL
for (i in 1:length(values)) result_vector = c(result_vector, values[i])
最近测了上面的,发现自己很可怜,
result_vector = NULL
system.time( for (i in 1:length(values)) result_vector = c(result_vector, values[i]))
这给了我
user system elapsed
0.288 0.016 0.333
反对另一种选择,
result_vector = character(length(values))
system.time( for (i in 1:length(values)) result_vector[i] = values[i])
这给了我
user system elapsed
0.004 0.000 0.011
为了从这个启示中学习,我想问一下当
result_vector = c(result_vector, new_value)
是不是每次迭代都会为result_vector重新分配一个新的空间,这会导致很多时间?
【问题讨论】:
-
这个问题对你有一些很好的见解:stackoverflow.com/questions/7142767/why-are-loops-slow-in-r
标签: r