- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
您好,亲爱的社区,
我正在学习 RcppParallel 并在尝试使用以下代码将 Rcpp::CharacterMatrix 转换为 RcppParallel::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>
甚至手动投在 body 上也没有成功。我哪里做错了??
如有任何建议和帮助,我们将不胜感激。
YYA
最佳答案
这里的问题是 CharacterVector
和 CharacterMatrix
类型实际上只是 SEXP
的 vector s——更具体地说,一个CharacterVector
包装 STRSXP
, 其内容是 SEXP
的数组s (运行时类型 CHARSXP
)。不幸的是,在与 R 的字符类型交互时,了解这些细节是必要的。
我不知道这是否可行,但如果可行,您会想使用类似 RMatrix<SEXP>
的东西,这将(大概)映射到底层 CHARSXP
s 在矩阵内——您可以在其中访问带下划线的 const char*
带有 CHAR
的字符串.
RMatrix
不幸的是,在这种情况下,类不够“智能”,无法直接提供对底层字符串的访问,所以我相信您必须自己解包。
关于c++ - Rcpp 并行 : Converting CharacterMatrix to RMatrix<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105531/
我有一个任务需要处理一个大型矩阵(数百万行,数百列)字符串。每行操作都是独立的。因此,我想利用一些并行计算来提高整个项目的速度。 如果我为数值矩阵构建myWorker,如下所示,我能够编译代码而不会出
您好,亲爱的社区, 我正在学习 RcppParallel 并在尝试使用以下代码将 Rcpp::CharacterMatrix 转换为 RcppParallel::RMatrix 时遇到此问题: str
使用 rcpp 时,我试图在 CharacterMatrix 或 StringMatrix 对象上使用子字符串,如下所示: test ' v(0,0) = v(
我是一名优秀的程序员,十分优秀!