问题标签 [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 回答
79 浏览

r - rcpp 函数中作为 arma 对象的矩阵列表

我对 Rcpp 很陌生,并且有一个关于将矩阵列表定义为 arma 对象的问题。我想加快在不可观察过程中具有协变量的隐马尔可夫模型的似然函数的计算。C++ 代码中的以下函数计算过程中没有协变量的隐马尔可夫模型的似然性:矩阵 gamma 不会随着观测值而改变。有用。


在这里,我尝试编写函数,使 gamma 是 n 个矩阵的列表,其中 n 是多个观察值,以便每个观察值的转移概率矩阵不同。但是如果代码正在运行,我会收到一条错误消息。

如果有人能帮助我理解如何正确定义矩阵列表,我将非常高兴。)))

UPD:这是错误消息:

sourceCpp("nLogLike_gamma.cpp") 中的错误:构建共享库时发生错误 1。

内置 C++ 函数的 R 代码:

0 投票
0 回答
213 浏览

r - 包装 arma::Mat 时如何避免深度复制到 Rcpp::NumericMatrix

当矩阵变大时,这非常昂贵,一旦转换为 Rcpp::NumericMatrix,我就不再需要“mat”对象了。

我已经想出了如何从 arma::Mat 窃取内存,通过

但问题是如何让 R/Rcpp 接管 'ptr' 以便直接从现有内存构造 NumericMatrix?

0 投票
2 回答
345 浏览

r - 使用 Rcpp 将矩阵四舍五入到任意精度

我想M在 Rcpp 中将矩阵四舍五入到任意精度。在 R 中这样做特别容易:

这在 Rcpp / C++ 中被证明是有点挑战的。

有一个round()函数,但是不幸的是它只能四舍五入到最接近的整数。出于输出目的,例如"%.2f"格式可用于四舍五入到两位小数。如果要在进一步计算中使用四舍五入的数字,则可以通过玩弄来将单个元素四舍五入到任意精度floorfroundf以及ceilingf使用手动调整的不同缩放因子的函数,请参阅此处的讨论和建议的解决方案。

因此,一种可能的前进方式是将上述方法应用于矩阵的每个元素(或更有效地应用于每一列)M。这似乎不必要地复杂,我想知道你们中的一个人是否有一个更有效/优雅的解决方案,用于在 Rcpp 中将矩阵舍入为任意精度。

0 投票
1 回答
207 浏览

c++ - c ++犰狳库中的sort_index()函数给出错误的结果

我在 C++ 犰狳中使用 sort_index() 函数,它似乎没有给出正确的结果:

输入向量是 [3,4,2,1,5] 对两个方向进行排序

并获得以下结果:[3,2,0,1,4] 和 [4,1,0,2,3]

两者都不正确。按升序排序应该给出 [2,3,1,0,4] (加倍检查numpy.searchsorted并给出上述结果)。

- - 编辑 - -

感谢您的回复!我现在意识到我误解了sort_index索引的方式。我仍在尝试找到一个np.searchsorted在 c++ 中实现的高效、等效的功能......

0 投票
0 回答
58 浏览

rcpp - 从给定包中调用函数使用 RcppArmadillo(Rcpp)

我正在学习使用 RcppArmadillo(Rcpp) 使代码运行得更快。在实践中,我通常会遇到我想从给定的包中调用一些函数。下面是一个小例子。我想计算套索(或 scad、mcp)的阈值。在 R 中,我们可以使用thresh_est函数 in library(HSDiC),其内容为

然后我尝试通过 RcppArmadillo(Rcpp) 实现上述功能。根据 teuder以及 coatlesscoatless的答案,我编写了下面的代码(保存为thresh_arma.cpp):

然后我编译为

但是,编译失败,我不知道原因。

0 投票
0 回答
589 浏览

c++ - 编辑 R Makevars 文件以使 STAN 工作并使用 Rccp 并编译 C++

是否可以更改 Makevars 文件?在 STAN 论坛上有人告诉我,我需要这样做才能使 Rccp 也能正常工作。当我尝试更改它时,我被锁定并将其保存为不同的文件名。我怎样才能覆盖这个?

更加具体:

我需要从这里更改文件:

对此:

当我在文本编辑器中打开文件时,我在顶部看到:

在此处输入图像描述 当我手动编辑它时,它不会保存为原始文件名,并与此重复:

在此处输入图像描述

0 投票
0 回答
32 浏览

rcpp - 通过 RcppArmadillo(Rcpp) 检查 BIC

我想检查统计信息中的 BIC 使用情况。我保存为check_bic.cpp的小示例如下所示:

然后我 在 R 中编译check_bic.cpp

并且编译可以成功通过。然而,当我跑

在 R 中,它显示错误为

我逐行检查.cpp代码,猜测问题可能发生在

因为如果uvec ii只有一个元素,那么ii.n_elem可能是 NaN 或 Rcpp 中的其他东西(虽然在 Matlab 中没问题),而我不知道如何处理大小写。有什么帮助吗?

0 投票
0 回答
348 浏览

r - Subset and assignment in an arma matrix

I am trying to assign values to specific rows and columns of a matrix using Rcpp and Armadillo.

This is the sort of subsetting and assignments that I am trying to do:

I have read the nice Rcpp tutorial here and the arma docs here but have failed to understand adequately and my attempts result in errors. How can I do this please?

Rcpp code:

Edit: I have something working -- by converting the integer r to an arma::uvec using r + arma::zeros<arma::uvec>(1). I assume there is a proper way to approach this.

0 投票
1 回答
135 浏览

c++ - 犰狳的 print() 方法和 cout 从 Rcpp 调用时的顺序不一致

最近,我一直在使用RcppArmadillo,但我注意到某些对象的打印顺序有些不一致。特别是在使用coutand时print()。有时,print()会先打印,然后cout;其他时候则相反。

我不明白为什么会这样。我想coutprint()被异步调用,因此顺序不同,但为什么会发生这种情况?以及如何预防?

例子

如果我有以下test_order.cpp文件

像这样从 R 调用它

打印时我得到不同的结果。三种不同的结果如下:

0 投票
1 回答
238 浏览

r - 从 Rcpp 中获取与基 R 相同的整数样本

是否可以从基数 R中获得相同sample的整数?Rcppsample

我尝试过使用Rcpp::sampleRcpp::RcppArmadillo::sample但它们没有返回相同的值——下面的示例代码。此外,帖子https://gallery.rcpp.org/articles/using-the-Rcpp-based-sample-implementation/的快速示例部分从基础 R 返回相同的样本,但是,我无法重现这些结果(我最后附上此代码)。Rcpp

可以这样做/请问我做错了什么?

我的尝试:

来自使用 RcppArmadillo-based Implementation of R's sample()库帖子的代码,该代码返回FALSE我的系统: