[R] extracting one element of correlation matrices from a list poroduced by the 'by' statement
Peter Dalgaard
p.dalgaard at biostat.ku.dk
Wed Apr 13 22:11:25 CEST 2005
"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