[R] FW: how to use by() ?
Jim Moon
moonja at ohsu.edu
Mon Nov 29 19:56:18 CET 2010
Well-phrased, David. :-)
Jim
-----Original Message-----
From: David Winsemius [mailto:dwinsemius at comcast.net]
Sent: Monday, November 29, 2010 10:53 AM
To: Jim Moon
Cc: r-help at 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:wdunlap at 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-bounces at r-project.org
>> [mailto:r-help-bounces at r-project.org] On Behalf Of Jim Moon
>> Sent: Monday, November 29, 2010 9:44 AM
>> To: r-help at 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 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.
>>
>
> ______________________________________________
> 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.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list