What is the fastest way to extract the min from each column in a matrix?
EDIT:
Moved all the benchmarks to the answer below.
Using a Tall, Short or Wide Matrix:
## TEST DATA
set.seed(1)
matrix.inputs <- list(
"Square Matrix" = matrix(sample(seq(1e6), 4^2*1e4, T), ncol=400), # 400 x 400
"Tall Matrix" = matrix(sample(seq(1e6), 4^2*1e4, T), nrow=4000), # 4000 x 40
"Wide-short Matrix" = matrix(sample(seq(1e6), 4^2*1e4, T), ncol=4000), # 40 x 4000
"Wide-tall Matrix" = matrix(sample(seq(1e6), 4^2*1e5, T), ncol=4000), # 400 x 4000
"Tiny Sq Matrix" = matrix(sample(seq(1e6), 4^2*1e2, T), ncol=40) # 40 x 40
)
Here is one that is faster on square and wide matrices. It uses
pminon the rows of the matrix. (If you know a faster way of splitting the matrix into its rows, please feel free to edit)Using the same benchmark as @RicardoSaporta: