使用以下简化代码,我希望从 N(0,1) 分布进行模拟,并返回一个包含模拟值的列表以及取决于模拟法线的向量(请参阅下面的代码)。问题是 if-else 语句根本不起作用!请问有人可以帮我理解问题出在哪里吗?
#include <RcppArmadillo.h>
#include <Rcpp.h>
using namespace Rcpp;
//[[Rcpp::depends(RcppArmadillo)]]
//[[Rcpp::export]]
List cond(arma::vec epsilon, IntegerVector Nsim) {
int iNsim = Nsim[0];
arma::vec ans(1);
arma::vec epsil(epsilon);
arma::vec vans = arma::zeros(iNsim);
arma::vec vcond = arma::zeros(iNsim);
LogicalVector cond;
RNGScope scope;
for (int i=0; i<iNsim; i++) {
ans = Rcpp::rnorm(1, 0.0, 1.0);
vans.row(i) = ans[0];
cond = abs(ans) >= epsil;
if (cond) {
vcond.row(i) = 10;
} else {
vcond.row(i) = -10;
}
}
return List::create(
_["sim"] = vans,
_["cond"] = …Run Code Online (Sandbox Code Playgroud)