【发布时间】:2017-07-25 07:14:49
【问题描述】:
我用.c 语言构建自己的函数。然后,我构建了一个 R 函数来使用 .C 调用 .c 函数,例如,
tmp <- .C("myfunction",
as.integer(N),
as.integer(n),
as.integer(w1),
as.integer(w2),
as.integer(w3),
PACKAGE = "mypackage")[[3]]
称为包装 R 函数。此外,我的函数基于或需要其他 .c 函数。据我所知,使用Rcpp 使其更加灵活和简单,例如:
cppFunction('int add(int x, int y, int z) {
int sum = x + y + z;
return sum;
}')
我也知道cppFunction 可以与C++ 语言一起使用。但是,我发现.c 函数和.c++ 之间没有太大区别。
我的问题是:我可以将 cppFunction 与我的 .c 函数一起使用,该函数需要包装器 R 函数吗?或者我需要先将我的.c 函数转换为.c++ 函数?我的功能所基于的其他功能呢?这会像任何常规的R 函数一样吗?
我的意思是:假设我有两个cppFunction 函数myfunc1 和myfunc2,其中myfunc2 基于myfunc1。那么假设我的第二个cppFunction如下:
cppFunction('int myfunc2(int x, int y, int z) {
int sum = x + y + z;
myfunc1 ## do some works here
return something;
}')
这样会好吗?还是我需要这样写:
cppFunction('int myfunc2(int x, int y, int z) {
int sum = x + y + z;
cppFunction('int myfunc2(int some arguments) {## do some works here}
return something;
}')
一般如何使用包含多个功能的构建cppFunction?
有什么帮助吗?
【问题讨论】:
-
我想如果你把所有东西都放在一个 Rcpp ".cpp" 文件中(从默认的 RStudio 开始),就可以了。
-
@F.Privé 非常感谢您的评论。你的意思是我可以将它作为包括多个函数的常规 R 函数来完成?
-
我的意思是,如果两个Rcpp函数在同一个文件中,它们就相互认识。否则,您将不得不使用标题。
-
@F.Privé 再次感谢您。是的,我明白你知道。我正在使用我自己的包,我认为它也可以。