One drawback with R is that in computations like this, several intermediate data structures with one dimension equal in length to nrow(dfrm) are allocated. Traversing an iterable of tuples is a simple way to think about it, is efficient, and ties in with other technologies e.g. relational databases. R is often people's first language (e.g. science graduates) and those people would be better off learning how to iterate over tuples than learning the obscure bestiary of data structure manipulators you point out.