Não é mais fácil usar aggregate? 

d<-data.frame(trat,id,y) # data.frame() é melhor do que cbind()
aggregate(data.frame(dados=d$y), list(trat=d$trat, id=d$id), function(x) sd(x)/sqrt(length(x)))


2013/11/12 ASANTOS <alexandresantosbr@yahoo.com.br>
Caros membros,

          Tenho variáveis respostas com diferentes tamanhos de vetores e na hora de calcular o erro padrão da média usando o with() e tapply(), em função dos diferentes comprimentos de vetores , não estou conseguindo calcular, alguém poderia me ajudar, segue CRM:

y1<-rnorm(100,5)### Variável resposta
y2<-rnorm(80,20)
y3<-rnorm(100,15)
y<-c(y1,y2,y3)


trat1<-rep(1,100)### Variável explicativa tratamento
trat2<-rep(2,80)
trat3<-rep(3,100)
trat<-c(trat1,trat2,trat3)

id1<-rep(60,100)### Variável explicativa idade
id2<-rep(84,180)
id<-c(id1,id2)

d<-cbind(trat,id,y)

ep.b3<-with(d, tapply(y, list(trat,id), sd, na.rm = T)) /sqrt(with(d, tapply(y, list(trat,id), length, na.rm = T)))  ### Calculando o erro padrão
ep.b3

--
======================================================================
Alexandre dos Santos
Proteção Florestal
IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso
Campus Cáceres
Caixa Postal 244
Avenida dos Ramires, s/n
Bairro: Distrito Industrial
Cáceres - MT                      CEP: 78.200-000
Fone: (+55) 65 8132-8112 (TIM)   (+55) 65 9686-6970 (VIVO)
e-mails:alexandresantosbr@yahoo.com.br
        alexandre.santos@cas.ifmt.edu.br
Lattes: http://lattes.cnpq.br/1360403201088680
======================================================================

_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.