0

我正在创建一个库来从贝叶斯模型中抽取样本,作为 R 包的后端。问题是,MCMC算法往往会给调试带来困难。此外,Rcpp 没有简单的调试方法;在实践中,我最终得到了大量的“cout”语句。

问题是当我尝试将所有内容移至独立库时,我意识到我爱上了 Rcpp 的List。是一种非常巧妙的方式来存储不同尺寸的样品。我试图了解 Rcpp 的实现,但真诚地 我无法理解它(基于策略)来尝试复制它。

问题:有没有办法实现任意大小的命名元组?(从广义上讲,没有必要使用 C++ 元组)。

我知道我可以使用 R 安装路径链接 Rcpp,但我不确定这是否是一个好习惯,或者我是否会在尝试将 R 包上传到CRAN时遇到问题(它们非常严格)或将其用作没有 R 的用户的独立库。

谢谢!

4

1 回答 1

0

我不确定这是你想要的。如果你想在 Rcpp 中建立一个任意大小的列表并返回到 R 端,你可以尝试如下:

std::vector<std::string> names;

std::vector<SEXP> elements;

// do something with the elements and names

Rcpp::List result(elements.size());

for (size_t i = 0; i < elements.size(); ++i) {
    result[i] = elements[i];
}

result.attr("names") = Rcpp::wrap(names);
// result can be return to R as a list
于 2018-06-06T23:26:07.200 回答