Podzbiór listy - sposób na plyr?

Często mam dane pogrupowane według jednej lub kilku zmiennych, z kilkoma rejestracjami w każdej grupie. Z ramki danych chcę wybrać grupy według różnych kryteriów.

Zwykle stosuję podejście dzielonego sapply-rbind, w którym wyodrębniam elementy z listy za pomocą wektora logicznego.

Oto mały przykład. Zaczynam od ramki danych z jedną zmienną grupującą („grupa”) i chcę wybrać grupy o maksymalnej masie mniejszej niż 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)

Właśnie zacząłem używać plyr, a teraz zastanawiam się:
czy istnieje alternatywa do osiągnięcia tego celu?

questionAnswers(3)

yourAnswerToTheQuestion