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

标签 c++ r rcpp

是否可以将整数 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/

相关文章:

c++ - 重载小于运算符

c++ - 关于类模板成员的显式特化的困惑

c++ - 与 Rcpp 并行化下的索引错误

r - 如何在 R 中得到一个大的稀疏矩阵? (> 2^31-1)

r - 将字符串切成固定宽度字符元素的向量

复制 CRAN valgrind 问题

c++ - 在 Windows 中不使用 Unicode 有什么缺点?

c++ - 无法从模板类调用通用 std::function 成员

r - 如何在箱线图中为每个组绘制额外的统计数据?

r - 计算行之间的日期差异