[R] if function problems

Petr PIKAL petr.pikal at precheza.cz
Tue Aug 2 11:14:26 CEST 2011


Hi

another possibility is to use logical values properties

> (x < 0)*x
[1] -3 -2 -1  0  0  0  0

Regards
Petr

> 
> 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
> 
> ______________________________________________
> 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