 <p>I assume that by *ply you mean the <code>apply</code> family (apply, sapply, lapply, tapply, etc.). If not, I am sorry.</p> <p>Still, I think that you can easily achieve what you want with the <code>&lt;&lt;-</code> operator. It will impact your performance, though.</p> <pre><code># Let's assume that your loop output is computed by this function : &gt; do.some.stuff &lt;- function(p) { + p + } # If we want to save the last output… &gt; ret &lt;- sapply(1:100000,function(x) { + to.save &lt;&lt;- do.some.stuff(x) + to.save + }) &gt; to.save [1] 100000 # If we want to save all the computed outputs… &gt; to.save &lt;- vector() &gt; ret &lt;- sapply(1:100000,function(x) { + ret &lt;- do.some.stuff(x) + to.save &lt;&lt;- c(to.save, ret) + ret + }) ^C # &lt;-- manual interruption &gt; str(to.save) int [1:21753] 1 2 3 4 5 6 7 8 9 10 ... # Example for dplyr and do(): library(dplyr) system.time({ to.save &lt;- vector() final.ret &lt;- sample_n(iris,10e4,replace=T) %&gt;% rowwise %&gt;% do(w_mean={ ret &lt;- round(.$Sepal.Width,digits=1) to.save &lt;&lt;- c(placeholder,out) ret }) }) # Commenting out the assignment saves about 80 seconds for me. </code></pre> <p>The impact on the performance is quite important, though. Besides, it is not a natural way of using an <code>apply</code> function. Maybe <code>for</code> is the answer here.</p>