[R] matrix manipulations

Liaw, Andy andy_liaw at merck.com
Tue Jul 15 19:21:21 CEST 2003


I don't think for loop is so bad here, but if you insist on not using it,
try:

> x<-matrix(rnorm(25), 5, 5)
> sapply(1:5, function(i) cor(x[,i], rowSums(x[,-i])))
[1] -0.04179336 -0.08613796  0.48194936  0.38317629 -0.22081706

HTH,
Andy

> -----Original Message-----
> From: David Andel [mailto:andel at ifi.unizh.ch] 
> Sent: Tuesday, July 15, 2003 12:52 PM
> To: r-help at stat.math.ethz.ch
> Subject: [R] matrix manipulations
> 
> 
> Hi
> 
> cor(x,apply(x,1,sum)) gives me the correlations of each 
> column with the sums of each row (correct me if I'm wrong, please).
> 
> What I need are the correlations of each column with the sums 
> of each row except the entry in the given column. It seems 
> that for any one column i I get it by doing:
> 
> cor(x[,i],apply(x[,-i],1,sum))
> 
> But I struggle to get it for all the columns. I was trying 
> things like:
> 
> for(i in 1:ncol(x)) cor(x[,i],apply(x[,-i],1,sum))
> 
> which doesn't generate any output at all, and
> 
> > rbind(for(i in 1:ncol(x)) cor(x[,i],apply(x[,-i],1,sum)))
>           [,1]
> [1,] 0.1880237
> 
> outputs just the result of the very last column.
> 
> I know that it shouldn't be necessary to use for(), but I 
> couldn't figure out a way how to do the task using e.g. apply().
> 
> How do you get the results of all columns?
> 
> Thank you,
> David
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list 
> https://www.stat.math.ethz.ch/mailman/listinfo> /r-help
> 

------------------------------------------------------------------------------
Notice: This e-mail message, together with any attachments, ...{{dropped}}




More information about the R-help mailing list