Karin Lagesen wrote: > I have a function like this: > > changedir <- function(dataframe) { > dir <- dataframe$dir > gc_content <- dataframe$gc_content > d <- ifelse(dir == "-", > gc_content <- -gc_content,gc_content <- gc_content) > return(d) > } > > The goal of this function is to be able to input a data frame like this: > > > >> lala >> > dir gc_content > 1 + 0.5 > 2 - 0.5 > 3 + 0.5 > 4 - 0.5 > 5 + 0.5 > 6 - 0.5 > 7 + 0.5 > 8 - 0.5 > 9 + 0.5 > 10 - 0.5 > 11 + 0.5 > 12 - 0.5 > 13 + 0.5 > 14 - 0.5 > 15 + 0.5 > 16 - 0.5 > 17 + 0.5 > 18 - 0.5 > 19 + 0.5 > 20 - 0.5 > > > And change the sign of the value of the gc_content field if the > corresponding dir field is negative. > > Howver, when I run this through the changedir function, all of the > gc_contents become negative. > > An I misunderstanding how to use the ifelse construct? And in that > case, how should I go about doing this in a different way? > > Thankyou very much in advance for your help, and I hope that my > question is not too banal! > > Karin > Yes, you are misunderstanding it and you should study the examples on the help page.
One key point is that (in general) both the 'yes' and 'no' get evaluated, so having assignments to the same variable in there is a really bad idea. Another point is that ifelse takes three _vectors_ and returns a fourth. I'd do result <- ifelse(dir=="-", -gc_content, gc_content) -- O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 ______________________________________________ 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.