我想创建一个包含循环结果的向量。结果是矢量本身,它们的长度不同。
现在我有代码
totalres <- NULL
loop begins
totalres <- c(totalres,loopres)
loop ends
但我被告知这是一个非常慢的代码。因为我有很多迭代和大数据。我想知道,是否有更快的方法呢?
答案 0 :(得分:0)
循环的三种可能性:
如果你有一个for
循环,你知道你的结果有多大。分配所需长度的矢量,例如totalres <- numeric(n)
,并填充它。 (或者使用apply
系列中的一个函数。这些都是为你做的。)
如果您不知道结果有多大,但知道大小上限,则分配到此最大大小并减少循环后的长度。
如果您无法估计这样的上限,请分配合理的大小并在循环内检查大小是否足够。如果向量已满,则增长,但不仅仅是一个元素,而是一堆元素。
当然,避免R级循环并使用矢量化解决方案会更好。