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
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}}
David, I am not sure if it can be done in a vectorized form, but this should work y <- NULL for(i in 1:ncol(x)) y <- c(y, cor(x[,i],apply(x[,-i],1,sum))) Cheers, Andy __________________________________ Andy Jaworski Engineering Systems Technology Center 3M Center, 518-1-01 St. Paul, MN 55144-1000 ----- E-mail: apjaworski at mmm.com Tel: (651) 733-6092 Fax: (651) 736-3122 |---------+--------------------------------> | | "David Andel" | | | <andel at ifi.unizh.ch> | | | Sent by: | | | r-help-bounces at stat.m| | | ath.ethz.ch | | | | | | | | | 07/15/2003 11:51 | | | | |---------+--------------------------------> >-----------------------------------------------------------------------------------------------------------------------------| | | | To: r-help at stat.math.ethz.ch | | cc: | | 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