Я кодировал некоторые симуляции, используя inline/RcppArmadillo, и наткнулся на проблему с RNGScope. Это баг или я что-то туплю?? Я очистил функцию, чтобы сделать ее читаемой (см. ниже).
Привет, Эд
library(inline)
code_cpp <- '
using namespace arma;
// From R
uvec x0 = as<uvec>(x0_r);
vec time_vec = as<vec>(time_vec_r);
// Declare variables
umat simulation_data=zeros<umat>(x0.n_elem, time_vec.n_elem);
RNGScope scope;
return wrap(simulation_data);
'
gillespie_sim <- cxxfunction(body = code_cpp,
sig = signature(x0_r = "integer", time_vec_r= "numeric"),
plugin = "RcppArmadillo")
x0 <- c(1,0,0,0,0,0)
time_vec <- 1:800
set.seed(23)
for(i in 1:100000) out2 <- gillespie_sim(x0_r=x0,time_vec_r=time_vec)
Ошибка, которую я получаю
R(43305) malloc: * ошибка для объекта 0x108c30a00: неверная контрольная сумма для освобожденного объекта - возможно, объект был изменен после освобождения. * установите точку останова в malloc_error_break для отладки прерывания: 6