gpt4 book ai didi

c++ - Rcpp 并行 : Converting CharacterMatrix to RMatrix

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:37 26 4
gpt4 key购买 nike

您好,亲爱的社区,

我正在学习 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

最佳答案

这里的问题是 CharacterVectorCharacterMatrix类型实际上只是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com