[R] Managing output
Oliver Bandel
oliver at first.in-berlin.de
Wed Aug 26 22:07:32 CEST 2009
Noah Silverman <noah <at> smartmediacorp.com> writes:
>
> Hi,
>
> Is there a way to build up a vector, item by item. In perl, we can
> "push" an item onto an array. How can we can do this in R?
> I have a loop that generates values as it goes. I want to end up with a
> vector of all the loop results.
>
> In perl it woud be:
>
> for(item in list){
> result <- 2*item^2 (Or whatever formula, this is just a pseudo example)
> Push(@result_list, result) (This is the step I can't do in R)
> }
>
Just do add an item at the end.
Example:
> mydat <- 1
> mydat[2] <- 33
> mydat[3] <- -4
> mydat[4] <- 12
> mydat[length(mydat)+1] <- 22
> mydat
[1] 1 33 -4 12 22
> mydat[length(mydat)+1] <- 5623
> mydat
[1] 1 33 -4 12 22 5623
> mydat[length(mydat)+1] <- 0.8962
> mydat
[1] 1.0000 33.0000 -4.0000 12.0000 22.0000 5623.0000 0.8962
When doing it in a loop, don't use length() over and over,
just count up the index.
For many entries, it would be faster, if you just allocate
the array that should be written, by just writing 0 into it,
or empty strings or something like this...
> mydat[1:100] <- 0
> mydat
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> mydat <- 1
> mydat[2] <- 33
> mydat[3] <- -4
> mydat
[1] 1 33 -4
instead of "mydat[1:100] <- 0"
use the length of the itemlist as second parameter.
Ciao,
Oliver
More information about the R-help
mailing list