Hi List,

Say I have a data.frame "DF" with 6 columns, 3 factors and 3 variables,
with different number of repetitions for each combination of factors.
I would like to build, for two given factors, a matrix per variable,
containing in each cell the mean or sd for a given couple of factors. 

I have managed to get to the result I wanted step by step, but I would
like to have it in a function. I have not found what I was looking for
so I decided to try to write my own function, using aggregate( ) to
generate the mean values as a dataframe, and then display this as a
matrix. 
I'd like it to be general enough so that I could use it in many cases.

>From what I have tried and understood, table( ) cannot do what I want
(no mean or sd ...) neither does xtabs( ), i.e. asking for a formula not
a function to passed as an argument ...

My final aim would be to plot this with persp( ), and it seems that
persp( ) must be fed with 2 dimensional arrays ...

Below is what I have tried to write, but it is not working.
It might be awkward, but I think it can work ... I think it is a problem
about correctly receiving and passing arguments in the different
function calls. 
Do you think there would be a smarter way of doing this ? Or can you see
what is going wrong with this ?

Any advice will be welcome

Pascal Boisson


matrixation<-function(DF, var, factorlist, FUN, condition) 

## DF is the original dataframe with raw results from my experiments
## var is the var that I want to print
## eg. DF$var1
## factorlist is a list of the two factor I want to mean against (but
I'm noot sure List is the best form for this argument), 
## eg. list(DF$fact1, DF$fact2)
## FUN would be the function I want to use during aggregation, 
## eg. Mean( )
## condition would be a condition for building a subset
## eg. DF$fact3==1

	{ 

sDF <- subset(DF, condition)
A <- aggregate(sDF, factorlist, FUN)

M <- matrix(data=NA, nrow = length(levels(factorlist[[1]])),
			   ncol = length(levels(factorlist[[2]])),
			   dimnames =
list(levels(factorlist[[1]]),levels(factorlist[[2]]) )
			) 



for (i in 1:length(A[,1])) 
	{
	tPhii <- A$Group.1[i]
	tAppari <- A$Group.2[i]
	M[tPhii, tAppari] <- A$pest_max_number[i]
	}
return(M)
}
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

DISCLAIMER:\ \ This email is from the Scottish Crop Researc...{{dropped}}


