设置元素名称Rcpp错误堆栈用法

设置元素名称Rcpp错误堆栈用法,r,rcpp,R,Rcpp,在rcpp中,我想创建characterVector,将vector变量设置为character元素 我试过了 #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] CharacterVector assignName(){ CharacterVector rn={"a","b","c"}; rn.names()=rn; return rn; } /***R assignName() m

在rcpp中,我想创建characterVector,将vector变量设置为character元素

我试过了

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
CharacterVector assignName(){
    CharacterVector rn={"a","b","c"};
    rn.names()=rn;

    return rn;
}

/***R
assignName()
m <- assignName()
m
*/
但是,如果我没有将函数分配给变量,则所有函数都有效,例如,如果我这样做:

>assignName()
 a  b  c
"a""b""c"

我不知道为什么会这样,但使用向量本身作为名称似乎不是一个好主意。您可以使用
Rcpp::clone
修复此问题:

#包括
使用名称空间Rcpp;
//[[Rcpp::导出]]
CharacterVector assignName(){
字符向量rn={a”,“b”,“c”};
//原始rn.names()=rn;
rn.names()=克隆(rn);
返回rn;
}
/***R
转让名称()

在本例中,如果有一个矩阵的行名设置为行名(m)={“a”、“b”、“c”},则可以工作,但不能工作,如果我在rcpp CharacterVector中这样做,则rn=行名(矩阵),然后rn=克隆(rn)返回rn,它将显示相同的值error@matteoantonucci请更新您问题中的,以反映这些附加要求。如果我在评论中提出问题,我现在很抱歉
Error: C stack usage 7969212 is too close to the limit 
>assignName()
 a  b  c
"a""b""c"