All plyr functions use the same split-apply-combine strategy: they
split the input into simpler pieces, apply .fun to each piece,
and then combine the pieces into a single data structure. This
function splits matrices, arrays and data frames by dimensions and
combines the result into a list. If there are no results, then this
function will return a list of length 0 (list()).
alply is somewhat similar to apply for cases
where the results are not atomic.