Мне нужно найти эффективный способ найти минимум множества однородных функций.
Я использую функцию stats :: optimize
Если я делаю это с одной функцией, никаких проблем.Однако мне нужно изменить параметры функции, взяв их из блока данных, и я не могу найти способ оптимизировать процесс обработки моего набора функций.Смотрите код ниже
myfun <- function (x) {
sqrt((x-3)^2 + (x-4)^2 + (x-5)^2)
}
optimize(myfun, c(0,10)
здесь нет проблем.
Однако мне нужно заменить эти числа каждой строкой фрейма данных, например
df <- data.frame(matrix(c(2,7,8,4,9,10,5,4,2), nrow = 3, ncol =3))
, например:
v <-df[1, ]
myfun2 <- function (v) {
function(x) sqrt((x-v[1])^2 + (x-v[2])^2 + (x-v[3])^2)
}
optimize(myfun2, c(0,10))
Error in optimize(myfun2, c(0, 10)) :
invalid function value in 'optimize'
optimize(myfun2(df[1, ]), c(0,10))
Error in optimize(myfun2(df[1, ]), c(0, 10)) :
invalid function value in 'optimize'
для одного случая, чтов конечном итоге получается цикл for для покрытия каждой строки фрейма данных
, однако параметр optimize возвращает ошибку, если я передаю myfun2.
Извините, если это простой вопрос, но я действительно не могу найтиправильный способ решить эту проблему и любая помощь будет очень признателен.
Я также пытался
m <- matrix(c(2,7,8,4,9,10,5,4,2), nrow = 3, ncol =3)
myfun2 <- function (v) {
function(x) sqrt((x-m[1,1])^2 + (x-m[1,2])^2 + (x-m[1,3])^2)
}
optimize(myfun2, c(0,10))
Error in optimize(myfun2, c(0, 10)) :
invalid function value in 'optimize'