An embedded and charset-unspecified text was scrubbed... Name: not available Url: https://stat.ethz.ch/pipermail/r-help/attachments/20050413/d0247332/attachment.pl
extracting one element of correlation matrices from a list poroduced by the 'by' statement
2 messages · Mohammad A. Chaudhary, Peter Dalgaard
"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