[R] Create a new variable and concatenation inside a "for" loop

Bert Gunter
Wed, 27 Apr 2016 20:18:19 -0000

...

"(R is case sensitive, so "C" has no such problem)."

Well, not quite. Try ?C

To add to the previous comments, Dr. Gordon appears to need to do
her/his homework and spend some time with an R tutorial or two before
posting further here. There are many good ones on the web. Some
recommendations can be found here:
https://www.rstudio.com/online-learning/#R

Cheers,
Bert


Bert Gunter

"The trouble with having an open mind is that people keep coming along
and sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Wed, Apr 27, 2016 at 12:57 PM, Jeff Newmiller
<jdnewmil at dcn.davis.ca.us> wrote:
> "c" an extremely commonly-used function. Functions are
first-class objects that occupy the same namespaces that variables do, so they
can obscure each other. In short, don't use variables called "c"
(R is case sensitive, so "C" has no such problem).
>
> Wherever possible, avoid incremental concatenation like the plague. If you
feel you must use it, at least concatenate in lists and then use functions like
unlist, do.call, or pre-allocate vectors or matrix-like objects with unuseful
values like NA and then overwrite each element in the vector or matrix-type
object in a loop like your first one.
> --
> Sent from my phone. Please excuse my brevity.
>
> On April 27, 2016 3:25:14 PM GMT+01:00, "Gordon, Fabiana"
<fabiana.gordon at imperial.ac.uk> wrote:
>>Hello,
>>
>>Suppose the you need a loop to create a new variable , i.e., you are
>>not reading data from outside the loop. This is a simple example in
>>Matlab code,
>>
>>for i=1:5
>>r1=randn
>>r2=randn
>>r=[r1 r2]
>>c(i,:)=r;   % creation of each row of c , % the ":" symbol
indicates
>>all columns. In R this would be [i,]
>>end
>>
>>The output of interest is c which I'm creating inside the
"for" loop
>>-also the index used in the loop is used to create c. In R I had to
>>create c as an  empty vector (numeric() ) outside the loop, otherwise I
>>get an error message saying that c doesn't exit.
>>
>>The other issue is the concatenation. In each iteration I'm creating
>>the rows of c by placing the new row  (r) below the previous one so
>>that c becomes a 5 x 2 matrix.
>>In R, it seems that I have no choice but use the function
"rbind". I
>>managed to write this code in R . However, I'm not sure that if
instead
>>of creating a new variable  using  the index in the "for" loop
, I
>>wanted to use the index to read data, e.g.  suppose I have a 2 X 10
>>matrix X and suppose I want to calculate the sin () for each 2 x 2
>>sub-matrix of and stored in a matrix A. Then the code would be
>>something like this,
>>
>>for i=1:5
>>A(:, 2*i-1:2*i)= sin(X(:, 2*i-1:2*i))   % the ":" symbol
indicates all
>>rows
>>end
>>
>>Many Thanks,
>>
>>Fabiana
>>
>>
>>Dr Fabiana Gordon
>>
>>Senior Statistical Consultant
>>Statistical Advisory Service, School Of Public Health,
>>Imperial College London
>>1st Floor, Stadium House, 68 Wood Lane,
>>London W12 7RH.
>>
>>Tel: 020 7594 1749
>>Email:
>>fabiana.gordon at imperial.ac.uk<mailto:fabiana.gordon at
imperial.ac.uk>
>>Web:
>>www.imperial.ac.uk/research-and-innovation/support-for-staff/stats-advice-service/<http://www.imperial.ac.uk/research-and-innovation/support-for-staff/stats-advice-service/>
>>
>>
>>
>>       [[alternative HTML version deleted]]
>>
>>______________________________________________
>>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>https://stat.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide
>>http://www.R-project.org/posting-guide.html
>>and provide commented, minimal, self-contained, reproducible code.
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.