问题标签 [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.
c++ - C++ STL 是否对 NaN 进行排序检查?
我在犰狳库中使用排序功能,但它不断触发 NaN 错误,当我手动检查时这些错误不存在......所以我切换到 STL 排序功能并且它工作了!所以我的好奇心是,STL 排序函数如何处理 NaN?
c++11 - 错误:normcdf():需要 C++11 编译器
normcdf()
sourceCpp()
是 RcppArmadillo 的一个函数,我可以在命令行中成功使用它。
如果我试图编译我自己的 R 包,编译不会返回任何错误。但是,如果我使用这个函数,它会返回以下错误。
错误:normcdf(): C++11 compiler required
c++ - Rstudio没有使用Rcpp Armadillo自动完成?
我长期以来一直使用 Rcpp 和 Rstudio,但最近我失去了自动完成和诊断功能。
我能够将原因追溯到 RcppArmadillow。
这是带有修改的基本默认 c++ 新文件代码。
此代码工作并正确执行。// [[Rcpp::depends(RcppArmadillo)]]
即使它需要被注释掉并且如果它被删除或双重注释,代码在引用时也会失败x(row-1,col-1);
。
我正在使用.rs.setClangDiagnostics(2)
clang 诊断程序,运行代码时出现以下错误:
似乎这个错误是完成失败的原因。
这个之前网上有人问过, 比如这里:https ://community.rstudio.com/t/rstudio-does-not-display-correct-c-diagnostics-libclang-error/26439,https://community.rstudio .com/t/rcpparmadillo-code-completion/41736 https://github.com/rstudio/rstudio/issues/4685
但看起来他们中的任何一个都没有我可以复制的解决方案。我不知道如何更改 PCH 文件设置或其他方式。
我正在使用 Windows 7 64 位。R 3.5.3,Rstudio 1.2.5033,带有 Rtools 3.5 编译器,RcppArmadillo 0.9.850.1.0,除 R 本身外,所有最近更新。
代码补全仅适用于 Rcpp 而没有 Armadillo,但基本的 NumericMatrix 功能会丢失。我想要一些方法来完成,或者用犰狳,或者让我的代码用 Rcpp 而不是犰狳编译。谢谢你。
r - 使用 renv::restore() 安装包时出错
我在使用renv 时遇到问题。对于一个更大的项目,我们希望使用renv来拥有相同版本的r和我们所有的包。然而,一旦有更新版本的包可用并且我们运行renv::restore()
我们就会收到类似以下的错误(请注意:rcpparmadillo不是唯一的包。它也发生在 graybox、mime、stringi 等等)。
我现在有两个问题:
- 我该如何解决这个错误?
- 如果renv,我们如何在整个团队中使用相同版本的包如果每次有新版本可用
谢谢你。莉齐
r - 将 Matrix::sparseMatrix 传递给 Rcpp
所以我对将稀疏矩阵从 R 传递到 c++ 的推荐方法感到非常困惑。我的印象是 sp_mat 是正确的参数类型,如下面的代码所示
但是,运行此代码会产生以下错误:
我在https://gallery.rcpp.org/articles/armadillo-sparse-matrix/中看到了这个例子,但我不确定它是否是说每次我们将稀疏矩阵传递给 c++ 时,我们应该使用那里提供的函数? 感谢您的澄清!
r - 使用带有 RcppArmadillo 的 SuperLU 稀疏求解器
我正在尝试通过 RcppArmadillo 使用来自犰狳(http://arma.sourceforge.net/docs.html#spsolve)的 SparseLU 求解器:
我得到错误undefined reference to 'superlu_free'
。我想我错过了一些图书馆链接。知道如何解决这个问题吗?
我在 Windows 10 上。
r - 从 Rcpp 中的 beta 分布生成样本的更好方法
我想生成一个随机向量,向量中的所有元素都来自 beta 分布。由于犰狳没有这样的功能。我目前的解决方案是使用 rbeta 函数(ftest1 & ftest2)。但与犰狳中的伽马函数(ftest3)相比,这似乎非常耗时。代码如下
基准如下
是否可以减少从 beta 分布中采样的时间成本?
c++ - 带有列表参数的 Rcpp 函数返回一个矩阵
我在r中有一段代码运行得很慢,所以我希望重写rcpp中的函数,但是,这是我第一次尝试使用 Rcpp,我无法编译或运行代码。
在 R 中,我试图重写的部分是
此代码应返回一个嵌套的矩阵列表。该列表应该是长度numstudies
,并且它的每个元素应该是一个按列排列的维度矩阵。这些矩阵的每一行都应该从多元正态分布中抽取,但是每一行的抽取将由不同的均值向量和不同的协方差矩阵控制。两者和都是嵌套列表,顶级长度,其中每个元素都是长度列表。n[v]
ql
finalmu_b2_l
finalcov_b2_l
finalmu_b2_l
finalcov_b2_l
numstudies
n[v]
到目前为止,我已经尝试编写一段rcpp代码,它只绘制一个所需的矩阵,但想扩展它以尽快返回一个矩阵列表。代码如下:
每当我尝试编译代码时(通过使用 .cpp 文件获取代码所在的位置,使用 function sourceCpp
),我都会收到错误消息:
'const::mat&' 类型的引用初始化无效
,我将其理解为创建draws
矩阵或填充矩阵的问题?
任何建议、指示或指导 -
- 为什么这段代码没有编译,我应该在 Rcpp 中做什么,和/或
- 如何扩展它以返回矩阵列表而不仅仅是单个矩阵将不胜感激。
编辑
原始 r 代码包含一个嵌套在 lapply 函数中的 mapply 函数。我想要一个输出是一个列表长度 numstudies,其中的每个元素都是一个矩阵。该列表中每个矩阵的每一行都是来自不同的多元正态分布的关联(因此在每个列表元素中,对于矩阵的每一行,都有一个唯一的均值向量和一个唯一的协方差矩阵来控制我想要绘制的多元正态分布从)。我编写了一个嵌套在 lapply 中的 mapply,以自动给出我想要的输出格式,同时允许从每个矩阵行的不同分布中进行绘制。
编辑2
将迭代更改为从 0 而不是 1 运行后,将编译以下代码:
编辑3
该代码当前编译,但不绘制样本。相反,我收到以下错误消息:
我已经准备了一个我希望这个基本函数做什么的例子(它只是从不同的多元正态分布中采样一个实现矩阵。
数据:
R代码
rcpp 代码
当然,一旦它起作用了-我仍然需要扩展它以绘制矩阵列表而不是单个矩阵
r - 错误:使用 arma::dot 时未定义对“sdot_”的引用
我使用 Rcpp::sourceCpp("test.cpp") 并输出以下错误信息。请注意, check1() 有效,而 check2 失败。区别在于“arma::vec”和“arma::fvec”。当我在 Windows 上尝试时发生错误。当我在linux上尝试它时,它可以工作。
(编辑:我在 Linux 上添加了我的 R 环境。PS:Linux 上的结果表明 float 比 double 快,这就是我更喜欢使用 float 的原因)
下面是Windows上的R环境
下面是Linux上的R环境
以下是“test.cpp”的代码
以下是 Linux 上的输出