[R] regressing each column of a matrix on all other columns

From: Stefan Mischke <mischke_at_sozpsy.unizh.ch>
Date: Fri 17 Jun 2005 - 07:05:56 EST


DeaR list

I would like to predict the values of each column of a matrix A by regressing it on all other columns of the same matrix A. I do this with a for loop:

	A <- B <- matrix(round(runif(10*3,1,10),0),10)
	A
	for (i in 1:length(A[1,]))    B[,i] <- as.matrix(predict(lm( A[,i] ~ 
A[,-i] )))
	B

It works fine, but I need it to be faster. I've looked at *apply but just can't seem to figure it out.
Maybe the solution could look somewhat like this:

	mylm <- function(y,ci) {
		x <- A[,-ci]
		b <- lm(y~x)
	}	
	B <- apply(A,2,mylm,ci=current_column_index(A))

Is there a way to pass the index of the current column in apply to my function? Am I on the right path at all? Thanks for your help.

Regards, Stefan



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Fri Jun 17 07:28:01 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:43 EST