strict_apply: Strict version of `apply()`
Description
It is a bad idea to use `apply()` with data frames because it coerces it's
input to a matrix. This generally leads to poor performance, and will give
unexpected results if your data frame gains non-numeric columns in the future
Usage
strict_apply(X, MARGIN, FUN, ...)