[R] [FORGED] IF LOOOP

David Winsemius dwinsemius at comcast.net
Wed Jun 14 01:41:05 CEST 2017


> On Jun 13, 2017, at 4:10 PM, Rolf Turner <r.turner at auckland.ac.nz> wrote:
> 
> On 14/06/17 08:46, matthias worni wrote:
>> Hey
>> This should be a rather simple quesiton for some of you. I want to make
>> some progress in looping...
>> I have the vector r, which contains single values --> see below:
>> r
>>   [1] 1.1717118 1.1605215 1.1522907 1.1422830 1.1065277 1.1165451 1.1163768
>> 1.1048872 1.0848836 1.0627211
>>  [11] 1.0300964 1.0296879 1.0308194 1.0518188 1.0657229 1.0685514 1.0914881
>> 1.1042577 1.1039351 1.0880163
>> I would like to take out simply the value "0.990956" from the vector,
>> printing out the rest of it.  The code is from the internet but does not
>> seem to work for my vector.

I'm not sure that the source of this code should be considered a trusted foundation for learning R. You should not be using for-loops to modify vectors in this manner.


>> Can't figure out why... Thanks for the help
>> r <- as.vector(lw)

That's probably not needed.

>> count=0
>> for (i in r)  {
>>   if(i == 0.990956) {
>>     break

I suspect you meant to use:

?'next'   # since `break` completely terminates a for-loop.


The ?'help' page has all the "control structures": `for`, `repeat`, `while` and associated boundaries and terminators

Both `break` and `next` are reserved words (names of functions, control tokens), so using the `?` operator requires quoting.

Also that for-next loop would do _nothing_ to the value of r. Printing would not modify the value of `r`.

You should read:

?Reserved

?'for'  # since `for` is also reserved

?print



>>   }
>>     print(i)
>>   }
> 
> FAQ 7.31

After following Rolf's advice ... Try:

r[ all.equal(r, 0.990956) ]

> 


> cheers,
> 
> Rolf Turner

Further note to matthias:
All caps in Subject is considered poor form, as is posting in HTML.

-- 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list