问题标签 [rcpparmadillo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
23 浏览

rcpp - 来自 RcppArmadillo 和 R 的样本返回不同的输出

似乎,当我为每个样本设置固定种子时,sample函数来自RcppArmadillo并返回相同的输出。R但是,在我的情况下,我得到了不同的结果。这是我的代码

有人知道为什么吗?

0 投票
0 回答
34 浏览

rcpp - Rcpp 中“as”的内存问题

我是 Rcpp 编程的菜鸟,这是 Rcpp 的一个简单问题。在 Rcpp 中使用 'as' 函数时,内存成本会增加一倍吗?以下面的粗略代码为例,“x”是一个非常大的矩阵。我想知道'xx'和'x'是否共享相同的内存或只是从'x'复制一个新内存?

0 投票
1 回答
560 浏览

rcpp - RcppArmadillo:对角矩阵乘法很慢

x是一个向量和M一个矩阵。

在 R 中,我可以做到

在 RcppArmadillo 中,我有以下慢得多的内容。

为什么这么慢?我怎样才能加快速度?

0 投票
1 回答
231 浏览

r - 来自大稀疏矩阵的 Rcpp submat

我正在尝试将 vec 乘以一个非常大的稀疏矩阵的子集(如后面的脚本),但它在使用时无法编译sourceCpp,它报告error: no matching function for call to ‘arma::SpMat<double>::submat(arma::uvec&, arma::uvec&),如果有人能帮我一个忙,将不胜感激。

0 投票
1 回答
81 浏览

r - 使用 Rcpp 不能更快地获取 all()

由于我对 Rcpp 有点陌生,所以我可能在这里遗漏了一个技巧。

让我们创建两个矩阵:

我现在想要完成以下工作:

然后我为 all() 创建了一个 Rcpp 版本,希望提高速度,定义为:

使用 all_C 检查速度,它被证明更慢:

麻烦的是,all_C() 比 all() 慢,所以我怀疑 Test2() 的缓慢速度需要更好的 all_C 调用以及在上面的示例中避免应用的方法。

我尝试使用这个答案在 Rcpp 中重写应用程序,但是使用这个 Rcpp 应用程序函数会使它变得更慢。

关于如何使用 Rcpp 提高 Test1() 速度的任何想法?

0 投票
1 回答
145 浏览

c++ - 无法构建 RcppArmadillo.package.skeleton 测试包:`R_init_ 的多个定义'

我正在尝试构建RcppArmadillo.package.skeleton测试包。像往常一样,我在 R 中做:

到目前为止,这看起来不错:

但它不编译:

这里的关键错误是

笔记

请注意,character_only=F参数 inpackage_native_routine_registration_skeleton是必需的,如此处所述;否则命令失败并显示no native symbols were extracted.

软件

Arch Linux 5.3.10、R 3.6.1、Rcpp 1.0.3

0 投票
1 回答
210 浏览

r - “inner_product”未在此范围内声明

嗨,我是 rcpp 新手并计算两个变量的内积,但收到以下代码的错误“inner_product 未在此范围内声明”:

请帮我解决这个问题。

0 投票
2 回答
584 浏览

c++ - 在 Rcpp 中动态添加行

我正在尝试在RcppArmadillo中编写一个将行动态附加到数组/矩阵的函数。它应该像rbindRPythonpandas.concat中一样工作。(我依靠C++来提高效率。)

我的具体目标是接收一个名为的向量foo并生成一个三列矩阵my_matrix,其中每一行都由某些条件确定。因为需要检查每个三元组 {i,j,k} 的条件,所以它涉及一个三元组循环。这是我到目前为止所拥有的(大写字母中的文字是我在此处包含的评论):

我面临三个问题:

  1. 在线上arma::vec new_row = {i,j,k};,有人告诉我“在初始化列表中,非常量表达式不能从'int'类型缩小到'double'
  2. 在线上my_matrix = join_vert(my_matrix, new_row);,我被告知“没有匹配函数调用'join_vert'
  3. 在线上return my_matrix;,有人告诉我“从 'arma::vec [3]' 到 'arma::Mat'(又名 'Mat<<>>')没有可行的转换

因为我不熟悉C++(尤其是涉及迭代修改的问题 2 和 3),所以我被卡住了。这里有人可以帮助解决问题吗?提前致谢!

0 投票
1 回答
215 浏览

r - RcppArmadillo 的 sample() 在更新 R 后不明确

我通常使用一个简短的 Rcpp 函数,该函数将一个矩阵作为输入,其中每一行包含 K 个总和为 1 的概率。然后,该函数为每一行随机采样一个 1 到 K 之间的整数,对应于所提供的概率。这是功能:

我最近更新了 R 和所有软件包。现在我不能再编译这个函数了。我不清楚原因。跑步

引发以下错误:

这基本上告诉我,我的电话RcppArmadillo::sample()是模棱两可的。谁能告诉我为什么会这样?

0 投票
1 回答
233 浏览

r - Travis CI 使用我的使用 C++、Rcpp 和 RcppArmadillo 的 R 包构建错误

这是我的R 包的 GitHub 存储库

我已经能够在 Windows、MacOS 和 Linux 集群上从源代码安装这个包devtools::install_github("ntthung/ldsr")

我正在尝试集成 Travis CI,并在构建时收到以下错误

错误:dyn.load(文件,DLLpath = DLLpath,...)中“ldsr”的包或命名空间加载失败:无法加载共享对象“/tmp/RtmpK7z3X6/Rinst2ef05609c709/00LOCK-ldsr/00new/ldsr/libs/ ldsr.so':/tmp/RtmpK7z3X6/Rinst2ef05609c709/00LOCK-ldsr/00new/ldsr/libs/ldsr.so:未定义符号:dpotrf_

我发现它dpotrf_属于一个名为libflame. 所以我Rload.R用 te 命令制作了文件Sys.setenv("PKG-LIBS"="-llibflame")并将以下内容添加到.travis.yml

但我仍然得到同样的错误。

我的包使用 Rcpp 和 RcppArmadillo。

请帮忙!谢谢。