jjzjj

c++ - 在编译要在包中使用的 C++ 代码时,如何将标志传递给 R?

我正在尝试在R包中使用来自OpenCV的一些代码,使用Rcpp构建包。当我在我的机器上编译c代码时,它工作正常。例如,我在本地使用以下语法编译facedetect.cpp代码:g++`pkg-config--cflagsopencv`facedetect.cpp-ofacedetect`pkg-config--libsopencv`但是,当我尝试使用以下命令将它包含在我的包中时:RCMDSHLIBfacedetect.cpp-ofacedetect在我的makevars文件中定义了以下内容:PKG_CPPFLAGS=`$(R_HOME)/bin/Rscript-e'Rcpp:::Cxx

c++ - 如何处理 R 中的列表到 Rcpp

我在R中有一个列表x我不确定如何处理Rcpp中的列表。我收到一条错误消息,有人可以检查我的代码吗?library(inline)fx=cxxfunction(signature(x='List'),body='Rcpp::Listxlist(x);intn=xlist.size();doubleres[n];for(inti=0;i 最佳答案 这里有几个小错误:两个语法错误:你需要Rcpp::NumericVector对于y,并且您在最后一个循环中缺少分号。对C++的一个误解:你需要像std::vectorres(n);这样的东西作

windows - 如何让 Rcpp 在 Windows XP 平台上的 R 中工作?

我一直在尝试在WindowsXP平台上使用R2.14.2中的Rcpp。据我所知,我遵循了让Rcpp工作的所有推荐步骤:我将R安装在名为C:\R\R-2.14.2的目录中;我在目录C:\R\Rtools中安装了最新版本的Rtools;我将环境PATH设置为以下(按照完全相同的顺序):C:\R\Rtools\bin;C:\R\Rtools\gcc-4.6.3\bin;C:\R\R-2.14.2\bin\i386;C:\WINDOWS;C:\WINDOWS\system32尽管如此,当我尝试在R中运行一个测试示例以查看Rcpp是否工作时,我收到了一条错误消息。这是测试示例:library(R

如何使用RCPP将Lgamma应用于矩阵(并且会更快)?

我想知道是否可以使用RCPP在大型矩阵的所有条目上应用Lgamma。我尝试使用向量://lgammaRcpp.cpp#includeusingnamespaceRcpp;//[[Rcpp::export]]NumericVectorlgammaRcpp(NumericVectorv){NumericVectorout;out=lgamma(v);return(out);}我做了一个简单的微学标:library("microbenchmark")xRCPP稍快地:Unit:millisecondsexprminlqmeanmedianuqmaxnevallgammaRcpp(x)5.405556

c++ - 通过 C++ 与 fst 在 R 中将对象写入磁盘

我受到fst包的启发,尝试编写一个C++函数来快速将我在R中的一些数据结构序列化到磁盘。但即使在非常简单的对象上,我也无法达到相同的写入速度。下面的代码是将一个1GB的大vector写入磁盘的简单示例。使用自定义C++代码,我实现了135MB/s的写入速度,这是我的磁盘根据CrystalBench的限制。在相同的数据上,write_fst实现了223MB/s的写入速度,这似乎是不可能的,因为我的磁盘无法写入那么快。(注意,我使用的是fst::threads_fst(1)和compress=0设置,文件的数据大小相同。)我错过了什么?如何让C++函数更快地写入磁盘?C++代码:#incl

c++ - 通过 C++ 与 fst 在 R 中将对象写入磁盘

我受到fst包的启发,尝试编写一个C++函数来快速将我在R中的一些数据结构序列化到磁盘。但即使在非常简单的对象上,我也无法达到相同的写入速度。下面的代码是将一个1GB的大vector写入磁盘的简单示例。使用自定义C++代码,我实现了135MB/s的写入速度,这是我的磁盘根据CrystalBench的限制。在相同的数据上,write_fst实现了223MB/s的写入速度,这似乎是不可能的,因为我的磁盘无法写入那么快。(注意,我使用的是fst::threads_fst(1)和compress=0设置,文件的数据大小相同。)我错过了什么?如何让C++函数更快地写入磁盘?C++代码:#incl

c++ - R 的 sum() 和 Armadillo 的 accu() 之间的区别

在给定相同输入时,R的sum()函数和RcppArmadillo的accu()函数的结果存在细微差别。例如以下代码:R:vecC++://[[Rcpp::depends("RcppArmadillo")]]//[[Rcpp::export]]doubleaccu(arma::vec&obj){returnarma::accu(obj);}给出结果:0.00047941851844312633(C++)0.00047941851844312628(R)根据http://keisan.casio.com/calculator真正的答案是:4.79418518443126270948E-4这

c++ - R 的 sum() 和 Armadillo 的 accu() 之间的区别

在给定相同输入时,R的sum()函数和RcppArmadillo的accu()函数的结果存在细微差别。例如以下代码:R:vecC++://[[Rcpp::depends("RcppArmadillo")]]//[[Rcpp::export]]doubleaccu(arma::vec&obj){returnarma::accu(obj);}给出结果:0.00047941851844312633(C++)0.00047941851844312628(R)根据http://keisan.casio.com/calculator真正的答案是:4.79418518443126270948E-4这

c++ - R stats::sd() 与 arma::stddev() 与 Rcpp 实现的性能

为了进行C++/Rcpp编程,我尝试实现一个(示例)标准差函数:#include#include#include#include//[[Rcpp::export]]doublecppSD(Rcpp::NumericVectorrinVec){std::vectorinVec(rinVec.begin(),rinVec.end());intn=inVec.size();doublesum=std::accumulate(inVec.begin(),inVec.end(),0.0);doublemean=sum/inVec.size();for(std::vector::iteratori

c++ - R stats::sd() 与 arma::stddev() 与 Rcpp 实现的性能

为了进行C++/Rcpp编程,我尝试实现一个(示例)标准差函数:#include#include#include#include//[[Rcpp::export]]doublecppSD(Rcpp::NumericVectorrinVec){std::vectorinVec(rinVec.begin(),rinVec.end());intn=inVec.size();doublesum=std::accumulate(inVec.begin(),inVec.end(),0.0);doublemean=sum/inVec.size();for(std::vector::iteratori