as.vector(do.call(c, lapply(split(x0, y0), mean)))

Test with data generated according to your code:

> phi=NULL
> for (i in 1:length(ind2)){
+   phi[i]=sum(x0[y0==ind1[i]])/ind2[i]
+ }
> phi
[1] -0.18922774  0.36333115 -0.04295032 -0.13892563 -0.03968301  0.33326034
[7]  0.28649576 -0.03786830
> as.vector(do.call(c, lapply(split(x0, y0), mean)))
[1] -0.18922774  0.36333115 -0.04295032 -0.13892563 -0.03968301  0.33326034
[7]  0.28649576 -0.03786830


HTH,
Dennis

On Mon, May 3, 2010 at 10:11 AM, song song <rprojecthelp@gmail.com> wrote:

> x0=rnorm(100)
> y0=rpois(100,3)+1
>
> ind=as.data.frame(table(y0))
>
> ind1=ind[,1]
> ind2=ind[,2]
>
> phi=NULL
> for (i in 1:length(ind2)){
>   phi[i]=sum(x0[y0==ind1[i]])/ind2[i]
> }
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

	[[alternative HTML version deleted]]

