jjzjj

c++ - 在 Rcpp 中包装一个 Fortran 函数

这最初在我看来是一项简单的任务,但我无法完成以下工作。我试图将一个fortran子例程包装到一个Rcpp调用中,以便在R中使用该函数。目标是将该函数合并到一个包中,因此仅在特定*.so文件上使用dyn.load()的想法是不可行的(除非有人可以告诉我怎么做?)。通过阅读类似的帖子,我怀疑在makevars文件中指定标志可能会解决问题,但提供的信息非常简洁here并真诚地感谢一些澄清。我已尽可能接近文档完成以下操作。使用Rcpp.package.skeleton创建包结构将我的fortran文件(hello.f)放在src目录中为Rcpp包装器(hello.cpp)创建了一个基本的cpp

c++ - R 和 C++ 迭代

我正在尝试使用Rcpp从R编写一个在C++中运行循环的函数。我有一个矩阵Z,它比函数应该返回的矩阵OUT短一行,因为OUT第一行的每个位置都将由标量sigma_0给出。该函数应该实现一个微分方程。每次迭代都取决于矩阵Z的值以及矩阵OUT的先前生成值。我得到的是这个:cppFunction('NumericMatrixsim(NumericMatrixZ,longdoublesigma_0,longdoubledelta,longdoubleomega,longdoublegamma){intnrow=Z.nrow()+1,ncol=Z.ncol();NumericMatrixout(n

c++ - 如何使用 Rcpp 注册 native 例程?

我正在写一个Bioconductor包。为此,它需要通过BiocCheck.我正在使用Rcpp和Rstudio使用标签//[[Rcpp::export]]和Rcpp类而不是SEXP类使C++代码对R可用。Rstudio自动生成Rcpp_export.cpp和Rcpp_export.R并且工作正常。但是,BiocCheck对此有提示:Checkingnativeroutineregistration..Registernativeroutines!seehttp://cran.r-project.org/doc/manuals/R-exts.html#Registering-native

c++ - 尝试使用 RcppArmadillo 编写 setdiff() 函数会出现编译错误

我正在尝试使用RcppArmadillo在C++中编写R的setdiff()函数的一种模拟。我相当粗糙的方法://[[Rcpp::export]]arma::uvecmy_setdiff(arma::uvecx,arma::uvecy){//Coefficientesofunsignedintegervectoryformasubsetofthecoefficientsofunsignedintegervectorx.//Returnssetdifferencebetweenthecoefficientsofxandthoseofyintn2=y.n_elem;uwordq1;for(

c++ - 在 C++ 函数环境中删除输入 R 对象

我在R函数中有一个Rcpp函数。R函数生成一些对象(比如一个大列表)并将其提供给Rcpp函数。在Rcpp函数内部,我处理R对象,将结果加载到多个C++类中。现在R对象变得无用了。我想清除R对象以为主要算法创建内存充足的环境。思路是://[[Rcpp::export]]voidcppFun(ListstructuredData){//copystructuredDatatoC++classes//NowIwantstructuredDatagonetosavememory//mainalgorithms...}/***RrFun(input){#RcreatesstructuredDat

c++ - Armadillo (C++) 中的快速数组置换(广义张量转置)

我有一个项目涉及3D数组的大量排列(arma::Cube)。特别是,所需的排列是通过切片交换列。在Matlab中,这是通过permute(cube,[1,3,2])有效计算的在Python中numpy.transpose(cube,axis=[0,2,1]).不幸的是Armadillo没有permute自行发挥作用。我尝试过不同的方法,但与Matlab相比,它们都相当慢。我想知道在Armadillo中排列(相当大的)立方体的更快方法是什么。使用gprof分析代码,大部分时间都花在了我在下面尝试过的置换函数上,而在Matlab中,对于同一个移植项目,大部分时间都花在了SVD或QR矩阵分解

r - 如何在 Windows 中调试(逐行)Rcpp 生成的代码?

我正在尝试调试Rcpp在运行时编译代码。很长一段时间以来,我一直试图让它成功地工作。这里问了一个非常相似的问题:Debugging(linebyline)ofRcpp-generatedDLLunderWindows问同样的问题,但问题和答案都远远超出了我的理解。这是我的:Windows7ProSP1R3.5Rstudio1.1.463withRcpp.RbuildToolsfromRstudio.(c++compiler)程序:在RstudioFile->NewFile->C++File(创建一个带有timesTwo函数的示例文件。)我在这个文件中添加了一个新函数://[[Rcpp:

c++ - 是否可以在 [win-builder](http ://win-builder. r-project.org/) 上构建一个使用 Rcpp 和 Boost.Thread 的 R 包?

最近做了一个R包,用Rcpp把R和C++整合起来。而C++库Boost用于多线程。我想知道我的包是否可以构建在http://win-builder.r-project.org/上?我发现定义了一个Make变量---BOOSTLIB---,如图http://cran.r-project.org/bin/windows/contrib/ThirdPartySoftware.html.我尝试使用仅包含header的库,没问题,但是当我尝试使用单独编译的库Boost.Thread时,出现“没有这样的文件”或“undefinedreference”错误。也许lib路径是错误的。但是,我几乎找不到

c++ - 带有 OpenMP 关键指令的 Rcpp 明显比编译的 C++ 代码慢

正如标题所说,与R包中使用的已编译和运行C++代码相比,在R包中使用带有Rcpp的#pragmaompcritical指令会显着降低执行速度,因为没有使用所有CPU能力。考虑一个简单的C++程序(使用cmake):test.h为:#ifndefRCPP_TEST_TEST_H#defineRCPP_TEST_TEST_H#include#include#include#include#includenamespacercpptest{classTest{public:staticunsignedinttest();};}#endif//RCPP_TEST_TEST_Htest.cpp中

c++ - 在 Windows 上从 C++ 调用 R 函数

我正在尝试在Windows上从C++调用R函数。我正在使用MinGW编译程序,但在编译时会抛出错误。代码(摘自Dirk)及编译错误如下:#includeusingnamespacestd;#include"RInside.h"//fortheembeddedRviaRInsideRcpp::NumericMatrixcreateMatrix(constintn){Rcpp::NumericMatrixM(n,n);for(inti=0;i编译:g++-I"C:\ProgramFiles\R\R-2.14.0\library\RInside\include"-I"C:\ProgramFi