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.zhan...@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@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. ______________________________________________ R-help@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.