在R中存在一个函数可以创建另一个函数,例如:
这导致的结果是:
这让我报错“此处不允许定义函数”,我不知道如何创建该函数。
编辑:问题RcppArmadillo pass user-defined function接近答案,但据我所知,它只提供了一种将C++函数传递给R的方法。它没有提供在将C++函数传递给R之前初始化某些值的方法。
create_ax2 <- function(a) {
ax2 <- function(x) {
y <- a * x^2
return(y)
}
return(ax2)
}
这导致的结果是:
> fun <- create_ax2(3)
> fun(1)
[1] 3
> fun(2)
[1] 12
> fun(2.5)
[1] 18.75
我有一个在R中创建函数的过程非常复杂,需要传入多个参数,设置返回函数中使用的某些常量,进行一些中间计算等等...但结果是一个非常慢的函数。因此,我尝试将代码翻译成C++,并与Rcpp一起使用。然而,我无法想出一种在C++函数内部构建函数并将其返回以在R中使用的方法。
以下是我目前的情况:
Rcpp::Function createax2Rcpp(int a) {
double ax2(double x) {
return(a * pow(x, 2));
};
return (ax2);
}
这让我报错“此处不允许定义函数”,我不知道如何创建该函数。
编辑:问题RcppArmadillo pass user-defined function接近答案,但据我所知,它只提供了一种将C++函数传递给R的方法。它没有提供在将C++函数传递给R之前初始化某些值的方法。
std::function
和 lambda,但是你不能像上面的代码那样定义它们。 - m0nhawk