在循环期间扩展结果向量

时间:2015-07-06 11:53:16

标签: r performance for-loop

我想创建一个包含循环结果的向量。结果是矢量本身,它们的长度不同。

现在我有代码

totalres <- NULL
loop begins
totalres <- c(totalres,loopres)
loop ends

但我被告知这是一个非常慢的代码。因为我有很多迭代和大数据。我想知道,是否有更快的方法呢?

1 个答案:

答案 0 :(得分:0)

循环的三种可能性:

如果你有一个for循环,你知道你的结果有多大。分配所需长度的矢量,例如totalres <- numeric(n),并填充它。 (或者使用apply系列中的一个函数。这些都是为你做的。)

如果您不知道结果有多大,但知道大小上限,则分配到此最大大小并减少循环后的长度。

如果您无法估计这样的上限,请分配合理的大小并在循环内检查大小是否足够。如果向量已满,则增长,但不仅仅是一个元素,而是一堆元素。

当然,避免R级循环并使用矢量化解决方案会更好。