本文整理汇总了C++中rcpp::NumericVector::end方法的典型用法代码示例。如果您正苦于以下问题:C++ NumericVector::end方法的具体用法?C++ NumericVector::end怎么用?C++ NumericVector::end使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rcpp::NumericVector
的用法示例。
在下文中一共展示了NumericVector::end方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: vz
// [[Rcpp::export]]
Rcpp::List worstcase_l1(Rcpp::NumericVector z, Rcpp::NumericVector q, double t){
// resulting probability
craam::numvec p;
// resulting objective value
double objective;
craam::numvec vz(z.begin(), z.end()), vq(q.begin(), q.end());
std::tie(p,objective) = craam::worstcase_l1(vz,vq,t);
Rcpp::List result;
result["p"] = Rcpp::NumericVector(p.cbegin(), p.cend());
result["obj"] = objective;
return result;
}
示例2: rcpp_neutral_hotspots_ntests
//' rcpp_neutral_hotspots_ntests
//'
//' Performs repeated neutral tests to yield average distributions of both
//' hotspot values and spatial autocorrelation statistics.
//'
//' @param nbs An \code{spdep} \code{nb} object listing all neighbours of each
//' point.
//' @param wts Weighting factors for each neighbour; must have same length as
//' nbs.
//' @param nbsi List of matrices as returned from \code{get_nbsi}. each element
//' of which contains the i-th nearest neighbour to each point.
//' @param alpha Strength of spatial autocorrelation
//' @param sd0 Standard deviation of truncated normal distribution used to model
//' environmental variation (with mean of 1)
//' @param nt Number of successive layers of temporal and spatial autocorrelation
//' used to generate final modelled values
//' @param ntests Number of tests used to obtain average values
//' @param ac_type Character string specifying type of aucorrelation
//' (\code{moran}, \code{geary}, or code{getis-ord}).
//'
//' @return A matrix of dimension (size, 2), with first column containing
//' sorted and re-scaled hotspot values, and second column containing sorted and
//' re-scaled spatial autocorrelation statistics.
//'
// [[Rcpp::export]]
Rcpp::NumericMatrix rcpp_neutral_hotspots_ntests (Rcpp::List nbs,
Rcpp::List wts, Rcpp::List nbsi, double alpha, double sd0, int niters,
std::string ac_type, bool log_scale, int ntests)
{
const int size = nbs.size ();
Rcpp::NumericMatrix hs1;
Rcpp::NumericVector z (size), z1 (size), ac (size), ac1 (size);
std::fill (ac.begin (), ac.end (), 0.0);
std::fill (z.begin (), z.end (), 0.0);
for (int n=0; n<ntests; n++)
{
hs1 = rcpp_neutral_hotspots (nbs, wts, nbsi, alpha, sd0, log_scale,
niters, ac_type);
z += hs1 (Rcpp::_, 0);
ac += hs1 (Rcpp::_, 1);
}
Rcpp::NumericMatrix result (size, 2);
result (Rcpp::_, 0) = z / (double) ntests;
result (Rcpp::_, 1) = ac / (double) ntests;
Rcpp::colnames (result) = Rcpp::CharacterVector::create ("z", "ac");
return result;
}
示例3: randomSample
// [[Rcpp::export]]
Rcpp::NumericVector randomSample(Rcpp::NumericVector a, int n) {
// clone a into b to leave a alone
Rcpp::NumericVector b(n);
__gnu_cxx::random_sample(a.begin(), a.end(),
b.begin(), b.end(), randWrapper);
return b;
}
示例4: eigs_sym_shift_c
void eigs_sym_shift_c(
mat_op op, int n, int k, double sigma,
const spectra_opts *opts, void *data,
int *nconv, int *niter, int *nops,
double *evals, double *evecs, int *info
)
{
BEGIN_RCPP
CRealShift cmat_op(op, n, data);
Rcpp::List res;
try {
res = run_eigs_shift_sym((RealShift*) &cmat_op, n, k, opts->ncv, opts->rule,
sigma, opts->maxitr, opts->tol, opts->retvec != 0);
*info = 0;
} catch(...) {
*info = 1; // indicates error
}
*nconv = Rcpp::as<int>(res["nconv"]);
*niter = Rcpp::as<int>(res["niter"]);
*nops = Rcpp::as<int>(res["nops"]);
Rcpp::NumericVector val = res["values"];
std::copy(val.begin(), val.end(), evals);
if(opts->retvec != 0)
{
Rcpp::NumericMatrix vec = res["vectors"];
std::copy(vec.begin(), vec.end(), evecs);
}
VOID_END_RCPP
}
示例5: updateMu
double lmerResp::updateMu(const Rcpp::NumericVector& gamma) {
#ifdef USE_RCPP_SUGAR
d_mu = d_offset + gamma;
#else
std::transform(gamma.begin(), gamma.end(), d_offset.begin(),
d_mu.begin(), std::plus<double>());
#endif
return updateWrss();
}
示例6: kdeDistValue
// kernel Dist function on a Grid
// [[Rcpp::export]]
Rcpp::NumericVector
KdeDist(const Rcpp::NumericMatrix & X
, const Rcpp::NumericMatrix & Grid
, const double h
, const Rcpp::NumericVector & weight
, const bool printProgress
) {
const unsigned sampleNum = X.nrow();
const unsigned dimension = Grid.ncol();
const unsigned gridNum = Grid.nrow();
// first = sum K_h(X_i, X_j), second = K_h(x, x), third = sum K_h(x, X_i)
std::vector< double > firstValue;
const double second = 1.0;
std::vector< double > thirdValue;
double firstmean;
Rcpp::NumericVector kdeDistValue(gridNum);
int counter = 0, percentageFloor = 0;
int totalCount = sampleNum + gridNum;
if (printProgress) {
printProgressFrame(Rprintf);
}
firstValue = computeKernel< std::vector< double > >(
X, X, h, weight, printProgress, Rprintf, counter, totalCount,
percentageFloor);
if (dimension <= 1) {
thirdValue = computeKernel< std::vector< double > >(
X, Grid, h, weight, printProgress, Rprintf, counter, totalCount,
percentageFloor);
}
else {
thirdValue = computeGaussOuter< std::vector< double > >(
X, Grid, h, weight, printProgress, Rprintf, counter, totalCount,
percentageFloor);
}
if (weight.size() == 1) {
firstmean = std::accumulate(firstValue.begin(), firstValue.end(), 0.0) / sampleNum;
}
else {
firstmean = std::inner_product(
firstValue.begin(), firstValue.end(), weight.begin(), 0.0) /
std::accumulate(weight.begin(), weight.end(), 0.0);
}
for (unsigned gridIdx = 0; gridIdx < gridNum; ++gridIdx) {
kdeDistValue[gridIdx] = std::sqrt(firstmean + second - 2 * thirdValue[gridIdx]);
}
if (printProgress) {
Rprintf("\n");
}
return kdeDistValue;
}
示例7: Getlk
// Calculate lk, k=1, ..., M with m0=0;
// where h=(h0, h1, ..., hM) with h0=0 and d=(d0, d1, ..., dM) with d0=0, dM=R_PosInf
void Getlk(Rcpp::NumericVector& lk, const Rcpp::IntegerVector& Mt, int M1, Rcpp::NumericVector d,
const Rcpp::NumericVector& t, const Rcpp::NumericVector& Xbeta){
int n = Mt.size();
std::fill(lk.begin(), lk.end(), 0);
for (int k=1; k<M1; ++k){
for (int i=0; i<n; ++i){
if(Mt[i]>=k) lk[k] += (std::min(d[k],t[i])-d[k-1])*std::exp(Xbeta[i]);
}
}
}
示例8: trapzRcpp
// [[Rcpp::export]]
double trapzRcpp(const Rcpp::NumericVector X, const Rcpp::NumericVector Y){
if( Y.size() != X.size()){
Rcpp::stop("The input Y-grid does not have the same number of points as input X-grid.");
}
if(is_sorted(X.begin(),X.end())){
double trapzsum = 0;
for (unsigned int ind = 0; ind != X.size()-1; ++ind){
trapzsum += 0.5 * (X[ind + 1] - X[ind]) *(Y[ind] + Y[ind + 1]);
}
return trapzsum;
} else {
Rcpp::stop("The input X-grid is not sorted.");
return std::numeric_limits<double>::quiet_NaN();
}
return std::numeric_limits<double>::quiet_NaN();
}
示例9: conditionalPoissonSecondInclusion
SEXP conditionalPoissonSecondInclusion(SEXP sizes_sexp, SEXP n_sexp)
{
BEGIN_RCPP
Rcpp::NumericVector sizes = Rcpp::as<Rcpp::NumericVector>(sizes_sexp);
int n = Rcpp::as<int>(n_sexp);
conditionalPoissonArgs args;
args.weights.insert(args.weights.begin(), sizes.begin(), sizes.end());
args.n = n;
std::vector<mpfr_class> inclusionProbabilities;
args.zeroWeights.resize(sizes.size());
args.deterministicInclusion.resize(sizes.size());
args.indices.clear();
for(int i = 0; i != sizes.size(); i++)
{
args.zeroWeights[i] = args.deterministicInclusion[i] = false;
if(sizes[i] < 0 || sizes[i] > 1)
{
throw std::runtime_error("Sizes must be values in [0, 1]");
}
else if(sizes[i] == 0)
{
args.zeroWeights[i] = true;
}
else if(sizes[i] == 1)
{
args.deterministicInclusion[i] = true;
args.indices.push_back(i);
}
}
computeExponentialParameters(args);
conditionalPoissonInclusionProbabilities(args, inclusionProbabilities);
boost::numeric::ublas::matrix<mpfr_class> secondOrder(sizes.size(), sizes.size());
conditionalPoissonSecondOrderInclusionProbabilities(args, inclusionProbabilities, secondOrder);
Rcpp::NumericMatrix result(sizes.size(), sizes.size());
for(int i = 0; i < sizes.size(); i++)
{
for(int j = 0; j < sizes.size(); j++)
{
result(i, j) = secondOrder(i, j).convert_to<double>();
}
}
return result;
END_RCPP
}
示例10: setTheta
/**
* Check and install new value of theta. Update Lambda.
*
* @param nt New value of theta
*/
void reModule::setTheta(const Rcpp::NumericVector& nt)
throw (std::runtime_error) {
R_len_t nth = d_lower.size(), nLind = d_Lind.size();
if (nt.size() != nth)
throw runtime_error("setTheta: size mismatch of nt and d_lower");
#ifdef USE_RCPP_SUGAR
if (any(nt < d_lower).is_true()) // check that nt is feasible
throw runtime_error("setTheta: theta not in feasible region");
#else
double *lp = d_lower.begin(), *ntp = nt.begin();
for (R_len_t i = 0; i < nth; i++)
if (ntp[i] < lp[i])
throw runtime_error("setTheta: theta not in feasible region");
#endif
copy(nt.begin(), nt.end(), d_theta.begin());
// update Lambda from theta and Lind
double *Lamx = (double*)d_Lambda.x, *th = d_theta.begin();
int *Li = d_Lind.begin();
for (R_len_t i = 0; i < nLind; i++) Lamx[i] = th[Li[i] - 1];
}
示例11: conditionalPoissonInclusion
SEXP conditionalPoissonInclusion(SEXP sizes_sexp, SEXP n_sexp)
{
BEGIN_RCPP
Rcpp::NumericVector sizes = Rcpp::as<Rcpp::NumericVector>(sizes_sexp);
int n = Rcpp::as<int>(n_sexp);
conditionalPoissonArgs args;
args.weights.insert(args.weights.begin(), sizes.begin(), sizes.end());
args.n = n;
std::vector<mpfr_class> inclusionProbabilities;
args.zeroWeights.resize(sizes.size());
args.deterministicInclusion.resize(sizes.size());
args.indices.clear();
for(int i = 0; i != sizes.size(); i++)
{
args.zeroWeights[i] = args.deterministicInclusion[i] = false;
if(sizes[i] < 0 || sizes[i] > 1)
{
throw std::runtime_error("Sizes must be values in [0, 1]");
}
else if(sizes[i] == 0)
{
args.zeroWeights[i] = true;
}
else if(sizes[i] == 1)
{
args.deterministicInclusion[i] = true;
args.indices.push_back(i);
}
}
computeExponentialParameters(args);
conditionalPoissonInclusionProbabilities(args, inclusionProbabilities);
std::vector<double> inclusionProbabilities_double;
std::transform(inclusionProbabilities.begin(), inclusionProbabilities.end(), std::back_inserter(inclusionProbabilities_double), [](mpfr_class x){ return x.convert_to<double>(); });
return Rcpp::wrap(inclusionProbabilities_double);
END_RCPP
}
示例12: rcpp_trunc_ndist
//' rcpp_trunc_ndist
//'
//' Truncated normal distribution (mean 1, respective upper and lower limits of
//' 0 and 2). Code copied directly from `github.com/mpadge/tnorm`, with the
//' readme of that repo demonstrating the speed advantages of using this rather
//' than pre-existing approaches (the R package `truncnorm`).
//'
//' @param len Number of elements to be simulated
//' @param sd Standard deviation
//'
//' @return A vector of truncated normally distributed values
//'
// [[Rcpp::export]]
Rcpp::NumericVector rcpp_trunc_ndist (int len, double sd)
{
double tempd;
// Set up truncated normal distribution
Rcpp::NumericVector eps (len);
std::vector <double> z;
z.resize (0);
while (z.size () < len)
{
eps = Rcpp::rnorm (len, 1.0, sd);
for (Rcpp::NumericVector::iterator it = eps.begin ();
it != eps.end (); ++it)
if (*it >= 0.0 && *it <= 2.0)
z.push_back (*it);
}
z.resize (len);
std::copy (z.begin (), z.end (), eps.begin ());
z.resize (0);
return eps;
}
示例13: vec_insert
void vec_insert( vec* obj, int position, Rcpp::NumericVector data) {
vec::iterator it = obj->begin() + position;
obj->insert( it, data.begin(), data.end() );
}
示例14: vec_assign
// helpers
void vec_assign( vec* obj, Rcpp::NumericVector data) {
obj->assign( data.begin(), data.end() ) ;
}
示例15: vectorLengthManhatten
double Util::vectorLengthManhatten(Rcpp::NumericVector x) {
Rcpp::NumericVector result;
result = abs(x);
double erg = std::accumulate(result.begin(),result.end(), 0.0);
return erg;
}