Tag: r

我们可以将Rcpp与多个C ++函数一起使用吗?

我用.c语言构建自己的函数。 然后,我使用.C来编写一个R函数来调用.c函数,例如, tmp <- .C("myfunction", as.integer(N), as.integer(n), as.integer(w1), as.integer(w2), as.integer(w3), PACKAGE = "mypackage")[[3]] 这被称为包裹Rfunction。 此外,我的function基于或要求其他.cfunction。 据我所知,使用Rcpp使它更Rcpp ,更容易,这样: cppFunction(‘int add(int x, int y, int z) { int sum = x + y + z; return sum; }’) 我也知道cppFunction适用于C++语言。 但是,我发现.c函数和.c++之间没有太大区别。 我的问题是:我可以将cppFunction与我的.c函数一起使用requrie wraper R函数吗? 或者我需要先将.c函数转换为.c++函数? 那么我的function所基于的其他function呢? 这会像任何常规的R函数一样吗? 我的意思是:假设我有两个cppFunction函数myfunc1和myfunc2 ,其中myfunc2基于myfunc1 。 然后假设我的第二个cppFunction如下: cppFunction(‘int myfunc2(int x, int y, int z) […]

使用.call()将dataframe从-R传递到R和C.

是否有通用方法将具有任意列(整数/因子,数字,字符数据)的dataframe从r传递回c并返回? 非常感谢能够关闭足够示例的指针。 谢谢。 RT

在R中抑制C警告消息

我从R包e1071调用一个R函数,它与libsvm(一个C程序)接口。 此函数将C(printf)警告消息传递给R控制台。 我知道这是因为警告消息的forms(警告:……)而R警告消息是大写的(即警告:……)。 我已经尝试了一切来摆脱R中的这些消息(下沉,抑制警告,看不见),但似乎没有任何效果。 有任何想法吗? 谢谢!

如何从R调用C函数?

如何使用R数据从R级使用C编写的某些函数。 例如。 使用如下function: double* addOneToVector(int n, const double* vector) { double* ans = malloc(sizeof(double)*n); for (int i = 0; i < n; ++i) ans[i] = vector[i] + 1 return ans; } 在上下文中: x = 1:3 x = addOneToVector(x) x # 2, 3, 4

R包与C / C ++和openMP:如何在“mypackage / src /”文件夹下制作“Makevars”文件?

我正在使用一些低级C/C++代码和openMP支持在Mac OSX上开发R包。 C++代码是使用Rcpp包编写的。 我的全局”Makevars”文件放在~/.R/文件夹下。 该文件如下所示。 CC=clang-omp CXX=clang-omp++ PKG_CFLAGS=Wall -pedantic PKG_CFLAGS= -fopenmp PKG_CXXFLAGS= -fopenmp PKG_LIBS= -fopenmp -lgomp 在这种配置下一切都很棒! 但是,现在我想为自己的编译构建特定于包的Makevars文件,以使包可移植。 我尝试的只是将全局Makevars文件移动到我的R pakcage src文件夹中。 但是,编译器抱怨它无法找到openMP头文件omp.h : ** libs clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I”/Library/Frameworks/R.framework/Versions/3.2/Resources/library/Rcpp/include” -I”/Library/Frameworks/R.framework/Versions/3.2/Resources/library/bigmemory/include” -I”/Library/Frameworks/R.framework/Versions/3.2/Resources/library/BH/include” -fopenmp -fPIC -Wall -mtune=core2 -g -O2 -c RcppExports.cpp -o RcppExports.o RcppExports.cpp:12:10: fatal error: ‘omp.h’ file not found #include ^ 1 error […]

使用Rcpp中其他包的C函数

我正在尝试从c ++函数中的cubature包调用C例程来执行多维集成。 我试图重现的基本R例子是 library(cubature) integrand <- function(x) sin(x) adaptIntegrate(integrand, 0, pi) 我可以从图库中按照这个配方从Rcpp调用这个R函数,但是从c / c ++到R来回切换会有一些性能损失。从C ++直接调用C函数似乎更合理。 C例程adapt_integrate从adapt_integrate导出 // R_RegisterCCallable(“cubature”, “adapt_integrate”, (DL_FUNC) adapt_integrate); 但是,我不明白如何从c ++中调用它。 这是我的跛脚尝试, sourceCpp(code = ‘ #include using namespace Rcpp; // [[Rcpp::export]] double integrand(double x){ return(sin(x)); } // [[Rcpp::depends(cubature)]] // [[Rcpp::export]] Rcpp::List integratecpp(double llim, double ulim) { Rcpp::Function p_cubature = R_GetCCallable(“cubature”, “adapt_integrate”); Rcpp::List […]

是否存在C / C ++的R编译器?

我想知道部署R的最佳方法.Matlab有“matlab编译器”(MCR)。 对R来说,过去已经讨论过将R编译成C或C ++的类似内容。 有没有人有任何由John Garvin在Rice开发的R to C编译器(RCC)的经验? 我已经研究过它,它似乎是唯一一个将R代码编译成可执行代码的项目。 据我所知,它还没有被使用。 [编辑1:] :要清楚,我知道有R和R(rJava,rcpp,Rpy等)的C和C ++(以及Java,Python等)接口。 我想知道在没有事先安装R的情况下编译和部署R代码的具体方法。 [编辑2:] :John Mellor-Crummey告诉我,他们仍然在为RCC工作,并希望在4个月左右(最早)提供。 如果我发现其他任何问题,我会进一步更新。