# [R] For Loop

MacQueen, Don m@cqueen1 @end|ng |rom ||n|@gov
Mon Sep 24 18:13:43 CEST 2018

```In my opinion this is a pretty reasonable question for someone new to R.

Yes, it can be written without a for loop, and it would be better. Rich Heiberger gave a good solution early on, but I'd like to add an outline of the reasoning that leads to the solution.

You are taking the log of a ratio, and in the ratio, the numerator uses elements 2 through len, and the denominator uses elements 1 through (len-1). So, just write it that way:

c1[2:len]/c1[1:(len-1)]

or, taking advantage of using negative numbers when indexing vectors,

c1[-1]/c1[-len]

then take the log

s <- log( c1[-1]/c1[-len] )

Comparing this with the loop version makes an example of why people say the R language is vectorized.

Do good R programmers make very little use of the for statement? Since R is vectorized, the for statement is necessary less often than in  non-vectorized languages. But "very little use" would be too broad a generalization. It will depend on what problems are being solved.

Finally, if using the loop in this case, it's true that s must exist before the statement is run. But that's not much of a problem. Just put
s <- numeric( len-1)
before the loop.

--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
Lab cell 925-724-7509

﻿On 9/22/18, 2:16 PM, "R-help on behalf of rsherry8" <r-help-bounces using r-project.org on behalf of rsherry8 using comcast.net> wrote:

It is my impression that good R programmers make very little use of the
for statement. Please consider  the following
R statement:
for( i in 1:(len-1) )  s[i] = log(c1[i+1]/c1[i], base = exp(1) )
One problem I have found with this statement is that s must exist before
the statement is run. Can it be written without using a for
loop? Would that be better?

Thanks,
Bob

______________________________________________
R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help