r - 设置元素名称 Rcpp 错误堆栈使用

标签 r rcpp

在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
*/

关于r - 设置元素名称 Rcpp 错误堆栈使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59247794/

相关文章:

c++ - Rcpp:如何将复数从 R 传递到 cpp

从 rcpp 返回 R 函数

c++ - Rcpp 错误 : ‘unique_ptr’ is not a member of ‘std’

r ggplot2 如何在 geom_text 中制作 vjust 将标签放在栏的底部

r - R 中的 difftime 生成 NA 值

r - 根据基数 R 中另一个向量的值生成一个包含重复值的向量

在 R 中为多个数据帧运行 for 循环?

r - 有没有办法区分包含和或乘积的函数?

r - 如何使用Rcpp加速for循环?

r - 错误 : could not convert using R function : as. 数据帧