jjzjj

c++ - 在 Rcpp 中引发异常

我正在尝试报告我的rcpp代码中的错误。我正在使用来自http://dirk.eddelbuettel.com/code/rcpp/html/classRcpp_1_1exception.html的构造函数exception(constchar*message_,constchar*file,intline).为了隔离问题,我编写了以下bar.cpp:#includeRcppExportSEXPbar(SEXPx){throw(Rcpp::exception("MyErrorMessage","bar.cpp",4));returnx;}当我在R中运行它时,这是我得到的:>dyn.lo

c++ - 将 c++ 对象作为指针传递给 Rcpp 中另一个函数的重用

假设我在C++中有以下2个函数://[[Rcpp::export]]SEXPfoo(){inta=1;Rcpp::XPtrptr(&a,true);returnptr;}//[[Rcpp::export]]intbar(SEXPa){Rcpp::XPtrx(a);intb=*x;returnb;}我希望能够在R中调用如下内容。当然,在这个例子中我可以在foo中返回一个int给R,但是在我原来的代码中,a是一个有点复杂的数据结构我不想只返回指向它的指针,所以它可以被另一个名为bar的C++函数重用a在这个例子中,我期望bar(a)返回1而不是0。我该如何解决这个问题?

c++ - 使用 Rcpp 的 R 快速 cbind 矩阵

cbind在R中重复调用比较耗时,但对各种数据类型也很强大。在绑定(bind)两个矩阵时,我编写的代码比cbind快3倍。但是dplyr包中的bind_cols仅比cbind快100倍。唯一遗憾的是它不能将矩阵作为输入。有人可以使下面的代码更快。另外,如何快速绑定(bind)稀疏矩阵?这是我使用的代码:require(Rcpp)func 最佳答案 借鉴这个comment罗曼·弗朗索瓦(RomainFrancois)关于我之前的Rcpp冒险之一,func1没什么大不了的,但对于这样一个微不足道的变化来说也不错。

c++ - Rcpp 可以公开一个引用同一类的 C++ 类方法吗?

当C++类的成员采用该类的实例时,是否可以使用Rcpp将C++类公开给R?例子:#includeclassTest{public:Test(intx):x_(x){}intgetValue(){returnx_;}voidaddValue(inty){x_+=y;}voidmerge(constTest&rhs){x_+=rhs.x_;}private:intx_;};usingnamespaceRcpp;RCPP_MODULE(mod_test){class_("Test").constructor("setsinitialvalue").method("getValue",&Tes

c++ - 在 Rcpp 中构建数据框

我想在Rcpp中构造一个数据框功能,但当我得到它时,它看起来并不像一个数据框。我试过推vector等,但它导致了同样的事情。考虑:RcppExportSEXPmakeDataFrame(SEXPin){Rcpp::DataFramedfin(in);Rcpp::DataFramedfout;for(inti=0;i在R中:>.Call("makeDataFrame",mtcars,"myPkg")[[1]][1]21.021.022.821.418.718.114.324.422.819.217.816.417.315.210.4[16]10.414.732.430.433.921.5

c++ - 在 R 中通过引用调用将 C 数组指针转换为 Rcpp

我在C中有以下代码。我是Rcpp的新手,我想将我必须的C代码转换为Rcpp。C代码:#include#include#includevoidcalculate(constdouble*d,double*w,intcol,intx){inti,j;for(i=0;iRcpp代码:NumericVectorcalculate(NumericVectord,NumericVectorw,intcol,intx){inti,j;for(i=0;i这是我的转换似乎不起作用。我的问题是如何将这些参数d+(i+a)*col和w+i*col*x作为Rcpp中的指针传递,因为它不是索引?

c++ - Rcpp 糖函数列表?

我刚刚开始使用Rcpp,想知道是否有某个地方存在Rcpp糖函数列表。在将我的一些慢代码转换为C/C++的过程中,我需要基本R函数提供的功能,例如match、tabulate和which。根据Hadley'sAdvancedRbookmatch被实现并且Rcpp-sugarvignette列出了一些更多可用的功能,但它似乎并不全面。我真正想知道的是:有没有办法在包的文档或其他地方找到可用的甜蜜功能以及我必须自己编写的功能?对于任何其他R包,我会直接转到R>help(package="Rcpp")但在这种情况下这似乎没有太大帮助。 最佳答案

c++ - 如何正确使用 Rcpp::pt( )

我正在阅读“与Rcpp无缝集成R和C++”的第4章,我遇到了一个小问题。在“list4.13”这本书中给出了一个关于如何使用R函数的示例。我尝试使用其他函数(与示例不同)并且我成功了。我的代码在这里:#include//[[Rcpp::export]]Rcpp::DataFramemyrandom(Rcpp::NumericVectorx){intn=x.size();Rcpp::NumericVectory1(n),y2(n),y3(n);y1=Rcpp::pexp(x,1.0,1,0);y2=Rcpp::pnorm(x,0.0,1.0,1,0);y3=Rcpp::ppois(x,3

c++ - Rcpp 中的矩阵乘法

首先,我是一个新手用户所以忘记我的普遍无知。我正在寻找R中%*%运算符的更快替代方案。尽管较早的帖子建议使用RcppArmadillo,但我已经尝试了2个小时让RcppArmadillo工作但没有成功。我总是遇到会产生“意外...”错误的词汇问题。我在Rcpp中发现了以下功能,我可以使用它:library(Rcpp)func然而,此函数执行逐元素乘法,并不像%*%那样工作。有没有一种简单的方法可以修改上面的代码来达到预期的效果?编辑:我想出了一个使用RcppEigen的函数,它似乎胜过%*%:etestttm(as>(tmm));constEigen::Mapttm2(as>(tm22

c++ - 在 Windows 上使用与 Rtools 和 Rcpp 包含的版本不同的 gcc 版本

在我着手更新gcc之前,有没有人真正尝试过这样做,他们能否确认从源代码构建R是更新用于使用Rcpp编译c++代码的gcc版本所必需的(即不一定用于包创作,当然也不是用于CRAN有效包)?请参阅Dirk对这个问题的回答,以及来自原始发帖人的后续评论Howtousegcc4.8.1withRcpponWindows. 最佳答案 似乎没有必要从源代码重建R。以下是我在Windows7x64系统上使用的步骤,运行R3.1.1和Rtools3.1.0.1942。此更新对gcc的影响尚未经过彻底测试:开始一个干净的Rsession和remove