Исходя из того, что в вашем сообщении об ошибке указано, что параллельные процессы не получают адекватной информации, я посмотрел примеры в документации к пакету optimParallel
.Первая определяет вспомогательную функцию, которая будет нести с собой среду, но в остальном она в некоторых отношениях напоминает вашу.
library(optimParallel)
set.seed(123); x <- rnorm(n=1000, mean=1, sd=2)
negll <- function(par, x) -sum(dnorm(x=x, mean=par[1], sd=par[2], log=TRUE))
o1 <- optimParallel(par=c(0, 1), fn=negll, x=x, method="L-BFGS-B", lower=c(-Inf, 0.0001))
o1$par
#[1] 1.032256 1.982398
Этот пример также отличается от вашего тем, что он использует данные для оценки параметров.Я не уверен, что означает ваш результат, в то время как я понимаю, что значения, возвращенные модификацией того примера, который я опубликовал здесь.Минимальное логарифмическое правдоподобие для этих конкретных данных (не полностью воспроизводимых, поскольку я забыл установить начальное число) составляет в среднем 1.126 и sd 2.007.
Например, как создать ситуацию, когдасреда неосновного пакета передается рабочим, см. этот предыдущий ответ: parallel :: clusterExport, как передать вложенные функции из глобальной среды?