[R] Getting the groupmean for each person

Christophe Pallier pallier at lscp.ehess.fr
Mon May 10 10:09:17 CEST 2004



Liaw, Andy wrote:

>Suppose I
>define the function:
>
>fun <- function(x, f) {
>    m <- tapply(x, f, mean)
>    ans <- x - m[match(f, unique(f))]
>    names(ans) <- names(x)
>    ans
>}
>
>  
>

May I ask what is the purpose of match(f,unique(f)) ?

To remove the group means, I have be using:

x-tapply(x,f,mean)[f]

for a while, (and I am now changing to 
x-tapply(x,f,mean)[as.character(f)] because of the peculiarities of 
indexing named vectors with factors )

The use of tapply(x,f,mean)[match(f,unique(f))] assumes a particular 
order in the result of tapply, no? It seems a bit dangerous to me.


Christophe Pallier




More information about the R-help mailing list