A aggregate() retorna resultado com colunas com nomes corretos se passar via fórmula. Além dela, a plyr::ddply() é uma função muito interessante para operações desse tipo. Segue exemplo das duas no CMR.
res <- aggregate(cbind(acidezKOH, acidezOLEIC)~Trat+Tipo+Tempo, data=d1, FUN=mean)
require(plyr)
colwise(mean, is.numeric)(d1)
colwise(mean, ~acidezKOH+acidezOLEIC)(d1)
ddply(d1, .(Trat, Tipo, Tempo), .fun=colwise(mean, is.numeric))
ddply(d1, .(Trat, Tipo, Tempo), .fun=colwise(mean, ~acidezKOH+acidezOLEIC))
À disposição.
Walmes.