Rcpp - 使用最优函数
Rcpp - Using the optim function
如何使用 R 语言的 varargs 函数,就像 optim 函数一样?
考虑下面的代码,我想最大化对数似然函数verossimilhanca
:
#include <Rcpp.h>
#include <RInside.h>
using namespace Rcpp;
// [[Rcpp::export]]
double verossimilhanca(Function pdf, NumericVector par, NumericVector x){
NumericVector log_result = log(pdf(par,x));
double soma =0;
for(int i = 0; i < log_result.size(); i++){
soma += log_result[i];
}
return -1*soma;
}
// [[Rcpp::export]]
List bootC(NumericVector x, NumericVector init_val){
Rcpp::Environment stats("package:stats");
Rcpp::Function optim = stats["optim"];
R["my_objective_fn"] = Rcpp::InternalFunction(&verossimilhanca);
Rcpp::List opt_results = optim(Rcpp::_["par"] = init_val,
Rcpp::_["fn"] = Rcpp::InternalFunction(&verossimilhanca),
Rcpp::_["method"] = "BFGS", x);
return opt_results;
// x is a data vetor.
}
总之,我有一个对数似然函数,我想最大化这个函数,x
是我的数据集。我知道RInside
允许我在C++中创建 R 的实例,但我想只通过使用Rcpp.h
库来解决这个问题,而无需诉诸RInside.h
。
在 optim 函数的参数中将x
替换为Rcpp::_["x"] = x
。 在我找到@coatless的答案之前,这也困扰着我。
相关文章:
- 如何使用Rcpp将R函数转换为C++函数
- rcpp函数中的清理时间很长
- Rcpp并行无匹配函数,用于调用"转换"
- 用于子集字符串的 Rcpp 函数
- 在模板化的 Rcpp 函数中调用另一个 cpp 函数
- Rcpp 函数在打包时使 RStudio 崩溃
- 使用 Rcpp 公开将指向对象的指针作为参数的构造函数
- 从 Rcpp 函数返回指向"新"对象的指针的正确方法
- Rcpp:在 R 中调用 c++ 函数而不导出 c++ 函数
- RCPP 函数,用于在 4 个方向上生成随机游走
- 通过std::shared_ptr使用Rcpp和RcppParallel的线程安全函数指针
- Rcpp:一个函数在NumericVector上工作,另一个需要将其视为标量
- 我们可以将 Rcpp 与多个C++函数一起使用吗?
- 如何通过 Rcpp 在 R 中使用C++函数模板?
- Rcpp - 使用最优函数
- Rcpp 需要一个复制构造函数
- Rcpp - 用二进制函数转换数字向量?
- 在 Rcpp 中调用'as'没有匹配函数
- RCPP:将布尔值传递在列表中从R到C 函数的错误,该函数获取RCPP ::列表
- 从 Rcpp 调用 R 函数的替代方法