ColMeans, ColSums はあるが,colMins はないので,簡単だし作ってみた。
> src <- '
+ Rcpp::NumericMatrix x(ax);
+ int nc = x.ncol();
+ int nr = x.nrow();
+ Rcpp::NumericVector res(nc);
+ for (int j = 0; j < nc; j++) {
+ double res1 = x(0, j);
+ for (int i = 1; i < nr; i++) {
+ if (res1 > x(i, j)) res1 = x(i, j);
+ }
+ res[j] = res1;
+ }
+ return res;
+ '
>
> colMins <- cxxfunction(signature(ax="numeric"), src, plugin="Rcpp")
> colMins(matrix(1:24, 4))
[1] 1 5 9 13 17 21
> x <- matrix(rnorm(100000000), 10000)
> system.time(a <- apply(x, 2, min))
ユーザ システム 経過
2.776 1.205 3.966
> system.time(b <- colMins(x))
ユーザ システム 経過
0.265 0.000 0.265
> all.equal(a, b)
[1] TRUE
まあ,apply で十分速いという評価で。