草庐IT

windows - R 15.2 Windows XP 下的 cppFunction(Rcpp) 错误

这个问题在这里已经有了答案:HowtogetRcpptoworkinRonaWindowsXPplatform?(3个答案)关闭9年前。当我打电话时:cppFunction('intadd(intx,inty,intz){intsum=x+y+z;returnsum;}')出现以下错误消息,有人遇到过类似的问题吗?任何线索如何解释此消息?g++-I"D:/PROGRA~1/R/R-215~1.2/include"-DNDEBUG-I"D:/ProgramFiles/R/R-2.15.2/library/Rcpp/include"-O2-Wall-mtune=core2-cfiled94

Rcpp 链接到外部库 (NLopt)

我需要一些帮助来构建链接到NLopt库(http://ab-initio.mit.edu/wiki/index.php/NLopt)的Rcpp包。我在Windows上使用RStudio的“Build&Reload”。我在包的\src文件夹中有以下文件:\srcMakevars.inMakevars.winRcppExports.cppnlopt.hnlopt.hpplibnlopt.liblibnlopt.deflibnlopt.alibnlopt.dll我已将NLOpt的.lib(使用MinGW构建)和dll文件复制到\src文件夹中,希望R能够自行编译它们。然而,情况似乎并非如此,

RCPP软件包创建符号找不到错误

我正在尝试使用RCPP创建R软件包。我要导出的主要代码在C++中,但它依赖于其他C++和C脚本。我的项目看起来像这样:├──DESCRIPTION├──NAMESPACE├──R│  └──RcppExports.R├──README.md├──Read-and-delete-me├──inst│  ├──include│  │  ├──Generate_RQMC.hpp│  │  ├──Get_seed.hpp│  │  ├──HilbertCode.hpp│  │  └──SamplePack│  │  ├──DB_NX.h│  │  ├──DB_ShiftNets.h│  │  ├──D

c++ - Rcpp 中值和引用参数之间的区别

这个问题在这里已经有了答案:Rcpppassbyreferencevs.byvalue(1个回答)关闭4年前。考虑这两个函数:library(Rcpp)cppFunction("NumericVectorfunc1(NumericVector&x){for(inti=0;i唯一的区别是func1将x作为一个引用参数,而func2将它作为一个值。如果这是常规的C++,我会将其理解为func1被允许在调用代码中更改x的值,而这不会发生在中func2.但是:>xx[1]0.20.40.60.81.01.21.41.61.82.0>func1(x)[1]0.40.81.21.62.02.42.

c++ - 删除矩阵元素并在 rcpp 中为其赋予新的大小和元素

R中的示例:A:a=matrix(1:100,10,10)B:a=matrix(1:9,3,3)C:a=matrix(1:400,20,20)这个简单示例的等效rcpp代码是什么?a始终是一个具有可变内容和大小的变量。在A中,我使用以下rcpp代码创建了矩阵a:NumericMatrixa(10,10)并用从1到100的数字序列填充它。我想用这样的命令调整这个矩阵的大小:a(3,3)或a(20,20)并在其中输入1到9或1到400。 最佳答案 RcppArmadillo可以解决问题:arma::matm1=arma::eye(10,

c++ - 在 C++ Rcpp 中实现 R 函数

我有以下R代码:CutMatrix0]它采用一个矩阵-FullMatrix并通过查找FullMatrix中的哪些列具有超过1个唯一值的列来创建CutMatrix-因此所有具有相同值的列都被消除。我想知道我是否可以使用Rcpp来加快大型矩阵的速度,但我不确定这样做的最佳方法-是否有一种糖分方式可以轻松地做到这一点(比如循环遍历cols并计算唯一值的数量)或者如果我必须使用来自STL的更复杂的东西。我想也许像下面这样的事情是一个开始(我还没有成功)——试图在R函数的colSums大括号之间进行操作,但我不认为我是正确子设置矩阵,因为它不起作用。src谢谢,本。

c++ - 捕获异常 : error: svd() failed to converge

我编写了一个使用Armadillosvd_econ函数的函数。我正在尝试处理svd无法收敛的情况,因为出于某种原因在这种情况下它不会中止函数。有问题的错误是:error:svd_econ():failedtoconverge根据我对SVDdocumentation的阅读,这应该抛出一个std::runtime_error,并且根据我对Exceptionstutorial的阅读,我应该可以这样处理:arma::matU,V;arma::vecS;try{//aDatandsubsetRowsarepreviouslydefinedarma::svd_econ(U,S,V,aDat.row

c++ - 加速 RcppArmadillo : How to link to OpenBlas in an R package

我正在开发一个使用RcppArmadillo的R包。我正在尝试利用OpenBLAS中更快的矩阵乘法。在documentation在C++armadillo库中,它说如果我们的机器上有OpenBLAS,那么Armadillo将使用OpenBLAS而不是BLAS。然而,当我编译我的R包时,我得到如下信息:g++-m64-std=c++11-shared-L/usr/lib64/R/lib-Wl,-z,relro-specs=/usr/lib/rpm/redhat/redhat-hardened-ld-oPackageTest.soclass1.oclass2.oclass3.oclass4

c++ - 从R中的嵌入式c++函数返回值

我有一些R代码,有点慢,所以我一直在尝试使用“内联”库直接在R代码中编写一些C++代码。效果很好,我现在正在尝试调整它。如果我在R中分配“结果”数据结构并将它们作为函数参数传递给c函数,我只能让它工作。我想知道是否可以在R代码中使用非voidc/c++函数,以便从c/c++而不是R分配和返回内存。请看下面的例子:library(inline)cppSig谢谢 最佳答案 有些事情我会采取不同的做法,尤其是在只是随意浏览Rcpp文档之后。所以这里只是一个快速列表:是的,我们可以使循环更快。通常很多。是的,我们可以返回原子C/C++类型以

c++ - 有效地将数值 vector 的每个元素与前一个元素进行比较

我正在尝试生成间隔值-给定一个vector,比如20、30、69、89、200,每一对之间有什么区别?数据集有25m个元素,所以我查看了R和RCpp的解决方案——速度很重要。R实现是:intertimeC++实现:NumericVectorintertime(NumericVectortimestamps){//Identifysizeofinputobjectintinput_size=timestamps.size();//InstantiateoutputobjectNumericVectoroutput(input_size-1);//Loopoverthedatafor(in