gpt4 book ai didi

c++ - 在 Rcpp 中使用整数参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:22 26 4
gpt4 key购买 nike

是否可以将整数 SEXP 参数直接转换为整数而不先将其转换为整数 vector ?

例子:

#include <Rcpp.h>

SEXP f(SEXP n)
{
Rcpp::IntegerVector n_vec(n);
int n1 = n_vec[0];
...
return R_NilValue;
}

最佳答案

当然——as<>()转换器做到这一点。

它可以被显式调用(你在这里需要),有时被编译器隐式调用,甚至被代码生成助手插入,如下所示:

R> cppFunction('int twiceTheValue(int a) { return 2*a; }')
R> twiceTheValue(21)
[1] 42
R>

如果您调用 cppFunction() (以及来自 Rcpp 属性或内联包的相关函数)与 verbose=TRUE参数,您会看到生成的代码。

在这里,我明白了

#include <Rcpp.h>

RcppExport SEXP sourceCpp_47500_twiceTheValue(SEXP aSEXP) {
BEGIN_RCPP
Rcpp::RNGScope __rngScope;
int a = Rcpp::as<int >(aSEXP);
int __result = twiceTheValue(a);
return Rcpp::wrap(__result);
END_RCPP
}

我们的文档解释了 BEGIN_RCPP 的内容, END_RCPP宏可以,为什么 RNGScope对象就在那里——你会看到 as<>()wrap()你需要。

关于c++ - 在 Rcpp 中使用整数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com