设置元素名称 Rcpp 错误堆栈使用
setting element name Rcpp error stack usage
我想在 rcpp 中创建 characterVector,并将向量变量设置为字符元素
我试过
#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
*/
例如,我有一个 CharacterVector rn 作为 a、b、c。
rn 应设置为:a="a"、b="b"、c="c"
然后在 R 中调用此函数后为:
m<-assignName()
发生错误:
Error: C stack usage 7969212 is too close to the limit
但是,如果我不将函数分配给变量,则一切正常,例如,如果我这样做:
>assignName()
a b c
"a""b""c"
我不确定为什么会这样,但使用向量本身作为名称似乎不是一个好主意。您可以使用 Rcpp::clone
:
来解决这个问题
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
CharacterVector assignName(){
CharacterVector rn={"a","b","c"};
// original rn.names()=rn;
rn.names()=clone(rn);
return rn;
}
/***R
assignName()
m <- assignName()
m
*/
我想在 rcpp 中创建 characterVector,并将向量变量设置为字符元素
我试过
#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
*/
例如,我有一个 CharacterVector rn 作为 a、b、c。 rn 应设置为:a="a"、b="b"、c="c"
然后在 R 中调用此函数后为:
m<-assignName()
发生错误:
Error: C stack usage 7969212 is too close to the limit
但是,如果我不将函数分配给变量,则一切正常,例如,如果我这样做:
>assignName()
a b c
"a""b""c"
我不确定为什么会这样,但使用向量本身作为名称似乎不是一个好主意。您可以使用 Rcpp::clone
:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
CharacterVector assignName(){
CharacterVector rn={"a","b","c"};
// original rn.names()=rn;
rn.names()=clone(rn);
return rn;
}
/***R
assignName()
m <- assignName()
m
*/