Rcpp中if-else语句中的问题

乌托比

通过以下简化代码,我希望从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"] = vcond);  
}

我通过将其保存到file.cpp然后通过sourceCpp(“ file.cpp”)在R中运行它。

德克·埃德比布特尔

原始代码对于在哪里使用向量以及在哪里使用标量感到困惑。

他是更短和修复的版本:

#include <Rcpp.h>

using namespace Rcpp;

//[[Rcpp::export]]
DataFrame cond(double epsil, int iNsim) {
  double ans;
  NumericVector vans(iNsim);
  NumericVector vcond(iNsim);
  RNGScope scope;

  for (int i=0; i<iNsim; i++) {
    ans = R::rnorm(0.0, 1.0);
    vans[i] = ans;
    if (fabs(ans) >= epsil) {
      vcond[i] = 10;
    } else {
      vcond[i] = -10;
    }
  }

  return DataFrame::create(_["sim"] = vans,
                           _["cond"] = vcond);  
}

除了使用(并通过)其中标量的意思是使用标量,它也校正abs()fabs()-一个共同的C / C ++问题。我还恢复了Rcpp向量-尽管我喜欢使用Armadillo,但这里并不需要它。

这是给定随机种子的示例输出:

 R> sourceCpp("/tmp/erlis.cpp")
 R> set.seed(1)
 R> cond(1.0, 6)   
         sim cond              
 1 -0.626454  -10
 2  0.183643  -10
 3 -0.835629  -10 
 4  1.595281   10
 5  0.329508  -10
 6 -0.820468  -10
 R> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rcpp中if-else语句中的问题

来自分类Dev

在awk中if else语句的问题

来自分类Dev

Thymeleaf中的th:each语句中的If-Else

来自分类Dev

在React JS中的if / else语句中发出警报

来自分类Dev

Thymeleaf中的th:each语句中的If-Else

来自分类Dev

在WordPress中的if else语句中嵌套while循环

来自分类Dev

在IF / ELSE语句中的Javascript`<Canvas>`中隐藏`Component`图像

来自分类Dev

awk中的if-else语句问题

来自分类Dev

PHP类中的if else语句语法问题

来自分类Dev

平台检测中if-else语句的问题

来自分类Dev

JavaScript中的if / else语句有问题

来自分类Dev

在SQL语句中包含变量的问题-在Python 3.4中

来自分类Dev

Bash中if语句中的“参数过多”问题

来自分类Dev

R中if语句中存在多个“&”条件的问题

来自分类Dev

在else语句中遇到问题

来自分类Dev

if/else 语句中的大括号问题

来自分类Dev

在 Python 中遇到嵌套 if-eilf-else 语句的问题

来自分类Dev

我的用例中的 if-else 语句有问题

来自分类Dev

Shell脚本-尝试验证if / else语句中git存储库中是否存在git标签

来自分类Dev

在Corona SDK中,如何在if,elseif,else语句中使用'and'关键字?

来自分类Dev

如何在Text Adventure中的If / Else语句中打印正确的随机数组值?

来自分类Dev

在If / Else语句中将文本存储到标量中-Robot Framework

来自分类Dev

在满足特定条件之前,我需要在R中的if else语句中寻求帮助

来自分类Dev

在C中的多个else-if语句中使用字符

来自分类Dev

在Corona SDK中,如何在if,elseif,else语句中使用'and'关键字?

来自分类Dev

如何在SQL Server中的else语句中编写SQL查询

来自分类Dev

将bash命令的输出保存到if..else语句中的变量中

来自分类Dev

HP OO 9中JavaScript(Rhino)if / else语句中的语法错误

来自分类Dev

在 python 中的三元语句中引发错误,而不使用经典的 if/else 语法

Related 相关文章

  1. 1

    Rcpp中if-else语句中的问题

  2. 2

    在awk中if else语句的问题

  3. 3

    Thymeleaf中的th:each语句中的If-Else

  4. 4

    在React JS中的if / else语句中发出警报

  5. 5

    Thymeleaf中的th:each语句中的If-Else

  6. 6

    在WordPress中的if else语句中嵌套while循环

  7. 7

    在IF / ELSE语句中的Javascript`<Canvas>`中隐藏`Component`图像

  8. 8

    awk中的if-else语句问题

  9. 9

    PHP类中的if else语句语法问题

  10. 10

    平台检测中if-else语句的问题

  11. 11

    JavaScript中的if / else语句有问题

  12. 12

    在SQL语句中包含变量的问题-在Python 3.4中

  13. 13

    Bash中if语句中的“参数过多”问题

  14. 14

    R中if语句中存在多个“&”条件的问题

  15. 15

    在else语句中遇到问题

  16. 16

    if/else 语句中的大括号问题

  17. 17

    在 Python 中遇到嵌套 if-eilf-else 语句的问题

  18. 18

    我的用例中的 if-else 语句有问题

  19. 19

    Shell脚本-尝试验证if / else语句中git存储库中是否存在git标签

  20. 20

    在Corona SDK中,如何在if,elseif,else语句中使用'and'关键字?

  21. 21

    如何在Text Adventure中的If / Else语句中打印正确的随机数组值?

  22. 22

    在If / Else语句中将文本存储到标量中-Robot Framework

  23. 23

    在满足特定条件之前,我需要在R中的if else语句中寻求帮助

  24. 24

    在C中的多个else-if语句中使用字符

  25. 25

    在Corona SDK中,如何在if,elseif,else语句中使用'and'关键字?

  26. 26

    如何在SQL Server中的else语句中编写SQL查询

  27. 27

    将bash命令的输出保存到if..else语句中的变量中

  28. 28

    HP OO 9中JavaScript(Rhino)if / else语句中的语法错误

  29. 29

    在 python 中的三元语句中引发错误,而不使用经典的 if/else 语法

热门标签

归档