为什么这会使我的R会话中止?

时间:2018-07-11 17:50:15

标签: r rcpp

我正在尝试在Rcpp中实现命名列表调用

在R

b<-list("bgroups"=c(1,1,1,1,0,0,0,0))
> b$bgroups
[1] 1 1 1 1 0 0 0 0

cppFunction(
  "
NumericVector split(Rcpp::List & b){
  Rcpp::NumericVector c= b['bgroups'];
  return c;
}")

split(b)

但这会导致我的R会话中止。

我正在尝试按照Dirk的演示文稿中的说明来实现此过程,但我缺少一些东西。

enter image description here

This is an extension of my question

1 个答案:

答案 0 :(得分:8)

以下作品:

b<-list("bgroups"=c(1,1,1,1,0,0,0,0))
b$bgroups
#[1] 1 1 1 1 0 0 0 0

Rcpp::cppFunction(
  '
NumericVector split(Rcpp::List & b){
  Rcpp::NumericVector c = b["bgroups"];
  return c;
}')

split(b)
#[1] 1 1 1 1 0 0 0 0

在C ++中,'用于引用字符,而"用于引用字符串。我的编译器警告我这一点:

warning: character constant too long for its type
   Rcpp::NumericVector c= b['bgroups'];
                            ^~~~~~~~~

通常,认真对待编译器警告是一个好主意。