问题描述
最初,我将一些数据从 R 直接导入到 C++ 函数中,如下所示:
#include <RcppArmadillo.h>
using namespace Rcpp;
// [[Rcpp::depends(RcppArmadillo)]]
List gibbs(List dat) {
int N = dat["N"];
arma::vec y = dat["y"];
...
}
最终,我需要的不仅仅是 N 和 y(input_data 列表有许多我需要导入的单独向量和矩阵)。所以,我认为创建一个类 Data 来存储所有输入变量并在构造函数中自动进行一些预处理是一个好主意。类似的东西
#include <RcppArmadillo.h>
using namespace Rcpp;
// [[Rcpp::depends(RcppArmadillo)]]
class Data {
public:
int N;
arma::vec y;
// other data
Data(List input_data) {
N = input_data["N"];
y = input_data["y"];
// pre-processing steps
}
};
然而,这行不通。它给出了以下错误:
object_LocLev.cpp:12:7: error: use of overloaded operator '=' is ambiguous (with operand types 'arma::vec' (aka 'Col<double>') and 'Rcpp::Vector<19>::NameProxy' (aka 'generic_name_proxy<19>'))
y = input_data["y"];
~ ^ ~~~~~~~~~~~~~~~
我的问题是为什么会出现这个错误?有没有更好的分配 y 的方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)