[R] if function problems

Steve Lianoglou mailinglist.honeypot at gmail.com
Tue Aug 2 02:28:45 CEST 2011


In addition to what David said:

On Mon, Aug 1, 2011 at 6:57 PM, zoe_zhang <1987.zhangxi at gmail.com> wrote:
> Dear All,
> Sorry to bother
> I want to write a function in R using if
> Say I have a dataset x,
> if x[i]<0, then x[i]=x[i],
> if x[i]>0, then x[i]=0
>
> for example, x=-3:3,
> then using the function, x becomes [-3,-2,-1,0,0,0,0]
>
> I write the codes as follows,
>
> gjr=function(x)
> {lena=length(x)
> for(i in 1:lenx)
> if (x[i]<0) return (x[i])
> if (x[i]>0) return (0)
> x}
>
> but then, doing
> gjr(x)
> it only comes out with one number
>
> Does anyone have any suggestions?

You define `lena`, but then use `lenx` in `for (i in 1:lenx)` in your
function ... I guess this might have something to do with it.

You shouldn't use a for loop, though, and just follow david's advice
by using logical indexing, or the `ifelse` function, ie:

R> ifelse(x < 0, x, 0)

HTH,
-steve

-- 
Steve Lianoglou
Graduate Student: Computational Systems Biology
 | Memorial Sloan-Kettering Cancer Center
 | Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact



More information about the R-help mailing list