[R] FOR LOOP w/IFELSE statement help

(Ted Harding) Ted.Harding at manchester.ac.uk
Thu Mar 6 00:45:07 CET 2008


On 05-Mar-08 23:37:42, zack holden wrote:
> Dear list,
> I'm trying to query a string of numbers to identify where in the string
> the numbers stop increasing (where x[i] == x[i+1]). In example 1 below,
> I've adapted code from Jim Holt to do this. However, I run into
> situations where the condition is not met, as in example 2, where the
> number string is continuous. In this case, I need to specify an
> alternative outcome, where if in the loop this condition isn't met, I
> default to the max. of the number string which.max(x). 
>  
> Can someone tell me how to add an additional statement to example 2,
> specifying that if in the loop, the 
> condition isn't found, then to give the max of the string?
>  
> Thanks in advance for any replies
>  
>### Example 1 ################### start with test string
> xx <- c(3,4,5,5,6,7,8,9)
> result <- NULLx1 <- which.min(x)
> for(i in x1:(length(x)-1)){
>  if((x[i] == x[i+1])) result <- c(result,x[i])
># start with min, result = where in string x[i]==x[i+1]}                
> 
>###Example 2 ####################################
> x <- c(3,4,5,6,7,8,9,10)
> result <- NULLx1 <- which.min(x)
> for(i in x1:(length(x)-1)){
>  if((x[i] == x[i+1])) result <- c(result, x[i])
># condition not met; result = NULL} 

I would rather do this in the following kind of way:
### Example 1:
xx <- c(3,4,5,5,6,7,8,9)
nn <- length(xx)
if(any(xx[1:(nn-1)]==xx[2:nn])){
  min(which(xx[1:(nn-1)]==xx[2:nn]))
  } else max(xx)
### Result: [1] 3

### Example 2:
x <- c(3,4,5,6,7,8,9,10)
n <- length(x)
if(any(x[1:(n-1)]==x[2:n])){
  min(which(x[1:(n-1)]==x[2:n]))
  } else max(x)
### Result: [1] 10

Best wishes,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 05-Mar-08                                       Time: 23:45:05
------------------------------ XFMail ------------------------------



More information about the R-help mailing list