Well-phrased, David. :-) Jim
-----Original Message----- From: David Winsemius [mailto:dwinsem...@comcast.net] Sent: Monday, November 29, 2010 10:53 AM To: Jim Moon Cc: r-help@r-project.org Subject: Re: [R] FW: how to use by() ? On Nov 29, 2010, at 1:36 PM, Jim Moon wrote: > Thank you for the suggestion, Bill. The result is not quite what I > would like. Here's sample code for you or anyone else who may be > interested: > > Al1 = c('A','C','C','C') > Al2 = c('G','G','G','T') > Freq1 = c(0.0078,0.0567,0.9434,0.9908) > MAF = c(0.0078,0.0567,0.0566,0.0092) > m1 = data.frame(Al1=Al1, Al2=Al2,Freq1=Freq1,MAF=MAF,major_allele='') > m1 > > Al1 Al2 Freq1 MAF major_allele > 1 A G 0.0078 0.0078 > 2 C G 0.0567 0.0567 > 3 C G 0.9434 0.0566 > 4 C T 0.9908 0.0092 > > > Using the suggestion involving "with()" (I swapped Al1 and Al2 from > before, but this does not affect the nature of the output): > > m1$major_allele <- with(m1, ifelse(Freq1==MAF, Al2, Al1));m1 > > Al1 Al2 Freq1 MAF major_allele I suspect that you have just been bitten by the data.frame- stringsAsFactors=TRUE crocodile. Since you are comparing floating point numbers, you are also wading in rivers where floating-point crocodiles are also hungry and searching out their next victim. -- David. > 1 A G 0.0078 0.0078 1 > 2 C G 0.0567 0.0567 1 > 3 C G 0.9434 0.0566 2 > 4 C T 0.9908 0.0092 2 > > > The output I desire is: > Al1 Al2 Freq1 MAF major_allele > 1 A G 0.0078 0.0078 G > 2 C G 0.0567 0.0567 G > 3 C G 0.9434 0.0566 C > 4 C T 0.9908 0.0092 C > > > Jim > > > -----Original Message----- > From: William Dunlap [mailto:wdun...@tibco.com] > Sent: Monday, November 29, 2010 10:02 AM > To: Jim Moon > Subject: RE: [R] how to use by() ? > > m1$major_allele <- with(m1, ifelse(Freq1==MAF, Al1, Al2)) > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > >> -----Original Message----- >> From: r-help-boun...@r-project.org >> [mailto:r-help-boun...@r-project.org] On Behalf Of Jim Moon >> Sent: Monday, November 29, 2010 9:44 AM >> To: r-help@r-project.org >> Subject: [R] how to use by() ? >> >> Hello, All! >> >> How might one accomplish this using the by() function? >> m1 is a data frame. >> >> # populate column "m1$major_allele" >> for ( i in 1:length(m1$major_allele)) { >> if ( m1$Freq1[i] == m1$MAF[i]){ >> m1$major_allele[i] = m1$Al1[i] >> } >> else{ >> m1$major_allele[i] = m1$Al2[i] >> } >> } >> >> >> Jim >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> 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. David Winsemius, MD West Hartford, CT ______________________________________________ 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.