Я полагаю, что следующее даст вам то, что вы ищете.
Это пишет функцию, которая выполняет один optimize
.Затем вы можете передать эту функцию в mapply
для перебора всех ваших входных значений.
optim_f <- function(x, shortA1, middleA1, timeA1,
minshort1, minmiddle1,
shortB1, middleB1, timeB1, ...){
optimize(
function(x, shortA1, middleA1, timeA1,
minshort1, minmiddle1,
shortB1, middleB1, timeB1){
abs(-(1 - shortA1 - middleA1) *
((timeA1) ^ (1 + x)) -
shortA1 *
((timeA1 + minshort1) ^ (1 + x)) -
middleA1 *
((timeA1 + minmiddle1) ^ (1 + x)) +
(1 - shortB1 - middleB1) *
((timeB1)^(1+x)) +
shortB1 *
((timeB1 + minshort1) ^ (1 + x)) +
middleB1 *
((timeB1 + minmiddle1) ^ (1 + x)))$minimum
},
shortA1 = shortA1,
middleA1 = middleA1,
timeA1 = timeA1,
minshort1 = minshort1,
minmiddle1 = minmiddle1,
shortB1 = shortB1,
middleB1 = middleB1,
timeB1 = timeB1, ...)
}
df$seuil <-
mapply(FUN = optime_f,
shortA1 = df$shortA1,
middleA1 = df$middleA1,
timeA1 = df$timeA1,
minshort1 = df$minshort1,
minmiddle1 = df$minmiddle1,
shortB1 = df$shortB1,
middleB1 = df$middleB1,
timeB1 = df$timeB1,
MoreArgs = list(interval = c(-10000, 10000),
maximum = FALSE,
tol = 0.0001),
SIMPLIFY = FALSE)