小编gtc*_*ser的帖子

从gdb显示Rcpp :: NumericMatrix的元素

我正在尝试使用gdb调试使用Rcpp功能的简单C ++子例程。我使用选项-O0 -g构建子例程foo.cpp。我使用R -d gdb启动R,然后使用dyn.load(“ foo.so”)加载子例程,然后使用.Call(“ foo”,X)调用该子例程。没有问题。当我在gdb中输入子例程时,我可以打印标准的C ++类型,例如“ print i”,其中i是int。但是,我无法打印Rcpp :: NumericMatrix xout的元素。我试过了

打印xout(1,1)

以及

打印R_PV(xout(1,1))

有谁知道如何做到这一点?

我的C ++代码是:

#include <iostream>
#include <Rcpp.h>

RcppExport SEXP foo(SEXP x){
    using namespace Rcpp;
    NumericMatrix xin = NumericMatrix(x);
    int nrow = xin.nrow();
    int ncol = xin.ncol();
    NumericMatrix xout(nrow, ncol);
    for(int j = 0; j<ncol; j++) {
      xout(0,j) = xin(0,j);
      for (int i=1; i<nrow; i++) {
          if (ISNA(xin(i,j)))
           xout(i,j) = xout(i-1,j);
          else
           xout(i,j) = xin(i,j);
      }
    }

    return(xout);
}
Run Code Online (Sandbox Code Playgroud)

从命令行运行:

R CMD SHLIB foo.cpp
Run Code Online (Sandbox Code Playgroud)

然后我开始使用R …

c++ gdb r rcpp

5
推荐指数
0
解决办法
367
查看次数

标签 统计

c++ ×1

gdb ×1

r ×1

rcpp ×1