[R] inefficient ifelse() ?
bhh at xs4all.nl
Wed Mar 28 17:44:42 CEST 2012
On 28-03-2012, at 17:19, Manta wrote:
> I have a similar problem. I have a dataset and an element. If the element is
> equal to "YY", I want to take the first column of the dataset, otherwise I
> want to take the second column. The following does not work, as it only
> evaluates the first element. Any idea?
See the description of ifelse.
>  "AAAXXX"
If you want the first column of a when b=="YY" why are you doing a and not a[,1]?
If you want the second column of a when !(b=="YY") why are you doing substr(a,1,3) and not a[,2]?
You are getting a scalar as result because of the way the ifelse function works.
To get what you want you could do:
a[,if(b=="YY") 1 else 2]
acolumn <- if( b == "YY" ) 1 else 2
More information about the R-help