Я реализую статистический метод в R, используя Rcpp, и в соответствии с повторяющимся советом, данным для SO, я поместил все это в пакет. Для своей реализации я использую процедуру стохастической волатильности, доступную в пакете stochvol
. Связывание выполняется, как описано в Запись расширений R 5.4.3 Связывание с собственными подпрограммами в других пакетах и выглядит следующим образом (плюс stochvol
в поле LinkingTo
):
#include <RcppArmadillo.h>
#include <R.h>
#include <R_ext/Rdynload.h>
void sv_update(const Rcpp::NumericVector &data, double *curpara_in, double *h_in,
double &h0, double *mixprob, int *r,
const bool centered_baseline, const double C0, const double cT,
const double Bsigma, const double a0, const double b0,
const double bmu, const double Bmu, const double B011inv,
const double B022inv, const bool Gammaprior, const bool truncnormal,
const double MHcontrol, const int MHsteps, const int parameterization,
const bool dontupdatemu, const double priorlatent0) {
static void(*fun)(const Rcpp::NumericVector &, double *, double *, double &, double *, int *, const bool, const double,
const double, const double, const double, const double, const double, const double, const double, const double,
const bool, const bool, const double, const int, const int, const bool, const double) = NULL;
if (fun==NULL) {
fun = (void(*)(const Rcpp::NumericVector &, double *, double *, double &, double *, int *, const bool, const double,
const double, const double, const double, const double, const double, const double, const double, const double,
const bool, const bool, const double, const int, const int, const bool, const double)) R_GetCCallable("stochvol", "update");
}
return fun(data, curpara_in, h_in, h0, mixprob, r, centered_baseline, C0, cT,
Bsigma, a0, b0, bmu, Bmu, B011inv, B022inv, Gammaprior, truncnormal,
MHcontrol, MHsteps, parameterization, dontupdatemu, priorlatent0);
}
Функция имеет множество аргументов, поэтому выглядит не очень привлекательно, но она работает так, как и должна была уже некоторое время.
Моя проблема в том, что обычно все работает нормально, поэтому при разработке своего кода я писал модульные тесты, которые работали без сбоев. Однако, когда я сейчас пытаюсь запустить вещи в небольшой симуляции, я получаю:
function 'update' not provided by package 'stochvol'
Информация в сети редкая, но предложение в этой теме - переустановить пакет. Я только что обновил R до 3.5.0, не копировал никаких пакетов, но переустанавливал все с нуля, но проблема остается.
Есть идеи, что я могу сделать, чтобы это исправить?