Subconjunto de uma lista - um caminho plyr?

Muitas vezes, tenho dados agrupados por uma ou mais variáveis, com vários registros em cada grupo. A partir do quadro de dados, desejo selecionar grupos de acordo com vários critérios.

Eu costumo usar uma abordagem split-sapply-rbind, onde eu extraio elementos de uma lista usando um vetor lógico.

Aqui está um pequeno exemplo. Começo com um quadro de dados com uma variável de agrupamento ('group') e desejo selecionar grupos que tenham uma massa máxima de menos de 45:

dd <- data.frame(group = rep(letters[1:3], each = 5), 
                 mass = c(rnorm(5, 30), rnorm(5, 50), 
                          rnorm(5, 40)))
    dd2 <- split(x = dd, f = dd$group)
    dd3 <- dd2[sapply(dd2, function(x) max(x$mass) < 45)]
    dd4 <- do.call(rbind, dd3)

Acabei de começar a usar plyr, e agora me pergunto:
Existe uma alternativa apenas plyr para conseguir isso?

questionAnswers(3)

yourAnswerToTheQuestion