问题标签 [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.
r - rcpp 函数中作为 arma 对象的矩阵列表
我对 Rcpp 很陌生,并且有一个关于将矩阵列表定义为 arma 对象的问题。我想加快在不可观察过程中具有协变量的隐马尔可夫模型的似然函数的计算。C++ 代码中的以下函数计算过程中没有协变量的隐马尔可夫模型的似然性:矩阵 gamma 不会随着观测值而改变。有用。
在这里,我尝试编写函数,使 gamma 是 n 个矩阵的列表,其中 n 是多个观察值,以便每个观察值的转移概率矩阵不同。但是如果代码正在运行,我会收到一条错误消息。
如果有人能帮助我理解如何正确定义矩阵列表,我将非常高兴。)))
UPD:这是错误消息:
sourceCpp("nLogLike_gamma.cpp") 中的错误:构建共享库时发生错误 1。
内置 C++ 函数的 R 代码:
r - 包装 arma::Mat 时如何避免深度复制到 Rcpp::NumericMatrix
当矩阵变大时,这非常昂贵,一旦转换为 Rcpp::NumericMatrix,我就不再需要“mat”对象了。
我已经想出了如何从 arma::Mat 窃取内存,通过
但问题是如何让 R/Rcpp 接管 'ptr' 以便直接从现有内存构造 NumericMatrix?
r - 使用 Rcpp 将矩阵四舍五入到任意精度
我想M
在 Rcpp 中将矩阵四舍五入到任意精度。在 R 中这样做特别容易:
这在 Rcpp / C++ 中被证明是有点挑战的。
有一个round()
函数,但是不幸的是它只能四舍五入到最接近的整数。出于输出目的,例如"%.2f"
格式可用于四舍五入到两位小数。如果要在进一步计算中使用四舍五入的数字,则可以通过玩弄来将单个元素四舍五入到任意精度floorf
,roundf
以及ceilingf
使用手动调整的不同缩放因子的函数,请参阅此处的讨论和建议的解决方案。
因此,一种可能的前进方式是将上述方法应用于矩阵的每个元素(或更有效地应用于每一列)M
。这似乎不必要地复杂,我想知道你们中的一个人是否有一个更有效/优雅的解决方案,用于在 Rcpp 中将矩阵舍入为任意精度。
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++ 中实现的高效、等效的功能......
c++ - 编辑 R Makevars 文件以使 STAN 工作并使用 Rccp 并编译 C++
是否可以更改 Makevars 文件?在 STAN 论坛上有人告诉我,我需要这样做才能使 Rccp 也能正常工作。当我尝试更改它时,我被锁定并将其保存为不同的文件名。我怎样才能覆盖这个?
更加具体:
我需要从这里更改文件:
对此:
当我在文本编辑器中打开文件时,我在顶部看到:
rcpp - 通过 RcppArmadillo(Rcpp) 检查 BIC
我想检查统计信息中的 BIC 使用情况。我保存为check_bic.cpp的小示例如下所示:
然后我 在 R 中编译check_bic.cpp
并且编译可以成功通过。然而,当我跑
在 R 中,它显示错误为
我逐行检查.cpp代码,猜测问题可能发生在
因为如果uvec ii
只有一个元素,那么ii.n_elem
可能是 NaN 或 Rcpp 中的其他东西(虽然在 Matlab 中没问题),而我不知道如何处理大小写。有什么帮助吗?
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.
c++ - 犰狳的 print() 方法和 cout 从 Rcpp 调用时的顺序不一致
最近,我一直在使用RcppArmadillo
,但我注意到某些对象的打印顺序有些不一致。特别是在使用cout
and时print()
。有时,print()
会先打印,然后cout
;其他时候则相反。
我不明白为什么会这样。我想cout
和print()
被异步调用,因此顺序不同,但为什么会发生这种情况?以及如何预防?
例子
如果我有以下test_order.cpp
文件
像这样从 R 调用它
打印时我得到不同的结果。三种不同的结果如下:
r - 从 Rcpp 中获取与基 R 相同的整数样本
是否可以从基数 R中获得相同sample
的整数?Rcpp
sample
我尝试过使用Rcpp::sample
,Rcpp::RcppArmadillo::sample
但它们没有返回相同的值——下面的示例代码。此外,帖子https://gallery.rcpp.org/articles/using-the-Rcpp-based-sample-implementation/的快速示例部分从基础 R 返回相同的样本,但是,我无法重现这些结果(我最后附上此代码)。Rcpp
可以这样做/请问我做错了什么?
我的尝试:
来自使用 RcppArmadillo-based Implementation of R's sample()库帖子的代码,该代码返回FALSE
我的系统: