RcppParallel: Converting CharacterMatrix to RMatrixamp;lt;Tamp;gt;(Rcp并行:将CharacterMatrix转换为RMatrixamp;lt;Tamp;gt;)
问题描述
您好,亲爱的社区,
我正在学习RcppParways,在尝试使用以下代码将Rcpp::CharacterMatrix转换为RcppParalt::RMatrix时遇到此问题:
struct CharMatDist : RcppParallel::Worker {
const RcppParallel::RMatrix<std::string> A;
const RcppParallel::RMatrix<std::string> B;
const NumericVector w;
RcppParallel::RMatrix<double> ret;
int n;
CharMatDist(CharacterMatrix A, CharacterMatrix B, NumericVector w, NumericMatrix ret)
: A(A), B(B), w(w), ret(ret) {
n = B.nrow();
}
...
}
如图库所示,我希望在A(A)等中自动执行转换,但它不起作用,并给出以下错误:
cannot convert 'Rcpp:Matrix<16>::iterator (aka Rcpp::internal::Proxy_iterator<Rcpp::internal::string_proxy<16> >)' to 'char*' in initialization
我也试过
RMatrix<char>
甚至在身体上手工铸造也没有成功。我哪里做错了??
如有任何建议和帮助,将不胜感激。
YYA
推荐答案
这里的问题是,CharacterVector和CharacterMatrix类型实际上只是SEXP的矢量--更具体地说,a包装了STRSXP,其内容是SEXP的数组(运行时类型CHARSXP)。遗憾的是,在与R的字符类型交互时,了解这些详细信息是必要的。
我不知道这是否有效,但如果有效,您会希望使用类似RMatrix<SEXP>的内容,它(假定)映射到矩阵中的底层CHARSXP,其中您可以使用CHAR访问带下划线的const char*字符串。
不幸的是,RMatrix类不够‘智能’,无法直接提供对基础字符串的访问,因此我相信您必须自己解开它。
这篇关于Rcp并行:将CharacterMatrix转换为RMatrix&;lt;T&;gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Rcp并行:将CharacterMatrix转换为RMatrix&;lt;T&;gt;
基础教程推荐
- 为什么派生模板类不能访问基模板类的标识符? 2021-01-01
- 初始化列表*参数*评估顺序 2021-01-01
- 如果我为无符号变量分配负值会发生什么? 2022-01-01
- 通过引用传递 C++ 迭代器有什么问题? 2022-01-01
- CString 到 char* 2021-01-01
- 我应该对 C++ 中的成员变量和函数参数使用相同的名称吗? 2021-01-01
- GDB 显示调用堆栈上函数地址的当前编译二进制文 2022-09-05
- 非静态 const 成员,不能使用默认赋值运算符 2022-10-09
- 为什么 typeid.name() 使用 GCC 返回奇怪的字符以及如 2022-09-16
- 为什么 RegOpenKeyEx() 在 Vista 64 位上返回错误代码 2021-01-01
