我是Rcpp
的新用户,在我的代码中,我需要在Rcpparmadillo中使用R
函数optim
。我提到了我正在尝试的例子。我在Calling R's optim function from within C++ using Rcpp中阅读了非常相似的问题,但它有很大不同,因为还有其他变量x
和y
。也就是说,我需要针对b优化函数,但它取决于变量x
和y
。
听到我正在尝试的代码。
#include <RcppArmadillo.h>
using namespace arma;
using namespace Rcpp;
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
vec fr(vec b, vec x, double y){
vec a1 = b.t()*x- y;
return a1;
}
// [[Rcpp::export]]
vec optim_rcpp(const vec& init_val, vec x, double y){
Rcpp::Environment stats("package:stats");
Rcpp::Function optim = stats["optim"];
Rcpp::List opt_results = optim(Rcpp::_["par"] = init_val,
Rcpp::_["fn"] = Rcpp::InternalFunction(&fr(init_val,x,y)),
Rcpp::_["method"] = "BFGS");
vec out = Rcpp::as<vec>(opt_results[0]);
return out;
}
或
// [[Rcpp::export]]
vec optim_rcpp(const vec& init_val, vec x, double y){
Rcpp::Environment stats("package:stats");
Rcpp::Function optim = stats["optim"];
Rcpp::List opt_results = optim(Rcpp::_["par"] = init_val,
Rcpp::_["fn"] = Rcpp::InternalFunction(&fr),
Rcpp::_["method"] = "BFGS");
vec out = Rcpp::as<vec>(opt_results[0]);
return out;
}
请给我任何评论!谢谢!