[R] If statements for multiple arrays

Phil Spector spector at stat.berkeley.edu
Fri Sep 17 00:37:39 CEST 2010


George -
    I think you're looking for the ifelse function:

> X = c(100,125,110,90)
> Y = c(200,110,150,200)
> Z = c(125,105,130,75)
> AA = c(150,140,200,65)
> result = ifelse(X < Z & Y > Z,AA - Z,NA)
> result
[1] 25 NA 70 NA
> result[!is.na(result)]
[1] 25 70

(I'm assuming you said 50 when you meant 70.)

 					- Phil Spector
 					 Statistical Computing Facility
 					 Department of Statistics
 					 UC Berkeley
 					 spector at stat.berkeley.edu

On Thu, 16 Sep 2010, George Coyle wrote:

> Hello,
>
> I wrote this code which works fine on a single observation:
>
> x<-100
> y<-200
> z<-125
> aa<-150
> if(x<z && y>z) {aa-z}
> result: 25
>
> I am trying to apply this logic where x,y,z,and aa are arrays but with very
> little success.  I have tried using loops and whiles but I always get errors
> of various types.  I have consulted a few manuals but with limited success.
> My hopeful outcome would be:
>
> data:
>    X       Y      Z      AA
> 1 100  200    125     150
> 2 125   110    105    140
> 3 110    150   130    200
> 4 90    200     75    65
>
> Here row 1 would return 25, row 2 would return nothing since Z<X, row 3
> would be 50, row 4 would be nothing since X>Z.
>
> In this case I am trying to return something where I could call the output a
> variable "Z" which would become an array based on the logic above where the
> members would be: (25, 50)
>
> I tried using this where the variables are arrays:
> if(x<z && y>z) {aa-z}
> But I get "NULL"
>
> I tried using this where the variables are arrays:
> if(x<z && y>z) {aa-z} else "NA"
> But I get "NA"
>
> When I tried using a loop:
> for(i in 1:length(x)) if(x<z && y>z) {aa-z} else "NA"
> I got "NULL"
>
> An attempt at a "while" statement crashed.
>
> The time series resource (
> http://cran.r-project.org/doc/contrib/Ricci-refcard-ts.pdf) is way too
> involved.  Most online sources I am finding are not good for "if" contingent
> array manipulation.  Annoyingly, just saying aa-z will work across the
> entire array but for some reason my ifs fail.  I know the R help group only
> wants serious emails so hopefully this will indicate I gave it a
> reasonable shot.
>
> Please help
>
> Thanks
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.
>



More information about the R-help mailing list