Múltiples funciones en una sola instrucción tapply o agregada

¿Es posible incluir dos funciones dentro de una sola declaración tapply o agregada?

A continuación utilizo dos declaraciones de tapply y dos declaraciones agregadas: una para media y otra para SD.
Preferiría combinar las declaraciones.

my.Data = read.table(text = "
  animal    age     sex  weight
       1  adult  female     100
       2  young    male      75
       3  adult    male      90
       4  adult  female      95
       5  young  female      80
", sep = "", header = TRUE)

with(my.Data, tapply(weight, list(age, sex), function(x) {mean(x)}))
with(my.Data, tapply(weight, list(age, sex), function(x) {sd(x)  }))

with(my.Data, aggregate(weight ~ age + sex, FUN = mean)
with(my.Data, aggregate(weight ~ age + sex, FUN =   sd)

# this does not work:

with(my.Data, tapply(weight, list(age, sex), function(x) {mean(x) ; sd(x)}))

# I would also prefer that the output be formatted something similar to that 
# show below.  `aggregate` formats the output perfectly.  I just cannot figure 
# out how to implement two functions in one statement.

  age    sex   mean        sd
adult female   97.5  3.535534
adult   male     90        NA
young female   80.0        NA
young   male     75        NA

Siempre puedo ejecutar dos sentencias separadas y fusionar la salida. Solo esperaba que pudiera haber una solución un poco más conveniente.

Encontré la respuesta a continuación publicada aquí:Aplicar múltiples funciones a la columna usando tapply

f <- function(x) c(mean(x), sd(x))
do.call( rbind, with(my.Data, tapply(weight, list(age, sex), f)) )

Sin embargo, ni las filas ni las columnas están etiquetadas.

     [,1]     [,2]
[1,] 97.5 3.535534
[2,] 80.0       NA
[3,] 90.0       NA
[4,] 75.0       NA

Preferiría una solución en base R. Una solución delplyr paquete fue publicado en el enlace de arriba. Si puedo agregar los encabezados de fila y columna correctos a la salida anterior, sería perfecto.

Respuestas a la pregunta(4)

Su respuesta a la pregunta