SEXP interval_index_C( SEXP matr, SEXP rn ){ BEGIN_RCPP ///////////////////////////////////// // INPUT Rcpp::NumericMatrix MATR(matr); Rcpp::NumericVector RN(rn) ; // rn random number for plausible value imputation int NR=MATR.nrow(); int NC=MATR.ncol(); // create output vectors NumericVector IND (NR) ; IND.fill(0); for (int nn=0;nn<NR;++nn){ for (int cc=0 ; cc < NC ; ++cc ){ if ( MATR(nn,cc) > RN[nn] ){ IND(nn) = cc + 1 ; break ; } } } /////////////////////////////////////// /// OUTPUT return( wrap(IND) ); // return List::create(_["maxval"] = MAXVAL , _["maxind"]=MAXIND ) ; END_RCPP }
SEXP rowMaxsCPP_source( SEXP matr ){ BEGIN_RCPP ///////////////////////////////////// // INPUT Rcpp::NumericMatrix MATR(matr); int NR=MATR.nrow(); int NC=MATR.ncol(); // create output vectors NumericVector MAXVAL (NR) ; NumericVector MAXIND (NR) ; MAXIND.fill(1); for (int nn=0;nn<NR;++nn){ MAXVAL[nn] = MATR( nn , 0 ) ; for (int cc=1 ; cc < NC ; ++cc ){ if ( MATR(nn,cc) > MAXVAL[nn] ){ MAXVAL[nn] = MATR(nn,cc) ; MAXIND[nn] = cc + 1 ; } } } /////////////////////////////////////// /// OUTPUT // return( wrap(prob) ); return List::create(_["maxval"] = MAXVAL , _["maxind"]=MAXIND ) ; END_RCPP }