[R] extracting one element of correlation matrices from a list poroduced by the 'by' statement

Mohammad A. Chaudhary mchaudha at jhsph.edu
Wed Apr 13 22:26:45 CEST 2005


Great! Thank you very much. Looks R has unlimited possibilities.
Regards,
Ashraf

-----Original Message-----
From: pd at pubhealth.ku.dk [mailto:pd at pubhealth.ku.dk] On Behalf Of Peter
Dalgaard
Sent: Wednesday, April 13, 2005 4:11 PM
To: Mohammad A. Chaudhary
Cc: r-help at stat.math.ethz.ch
Subject: Re: [R] extracting one element of correlation matrices from a
list poroduced by the 'by' statement

"Mohammad A. Chaudhary" <mchaudha at jhsph.edu> writes:

> I am producing 2X2 correlation matrices by a class variable. I need to
> extract a vector of correlation coefficients only. I am doing that in
a
> loop (see below) but I am sure there would be a simpler way. Please
> help!
> 
>  
> 
> > by(d1[,c(2,3)],d1[,1],cor)
> 
.....
>           c         e
> 
> c 1.0000000 0.3746597
> 
> e 0.3746597 1.0000000
> 
> ***********************************************
> 
> > t<- rep(0,10)
> 
> > ind=0
> 
> > for(r in 1:10) {
> 
> +    ind=ind+1 
> 
> +    t[ind] <- by(d1[,c(2,3)],d1[,1],cor)[[r]][1,2]
> 
> +                } 
> 
> > t   
> 
> [1] 0.1972309 0.2469402 0.3177058 0.3492043 0.3385547 0.2876410
> 0.3374766 0.4380190 0.3452468 0.3746597

One way could be 

 sapply(by(d1[2:3],d1[,1],cor),"[",1,2)

another is 

 by(d1[2:3],d1[,1],function(f)cor(f)[1,2])

or, (this possibility never occurred to me before)

 by(d1[2:3],d1[,1], with, cor(c,e))


You might want to wrap the last two in a c() construct but they
actually are vectors already, they just don't look it when print.by
has done its work.


-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list