Я хотел бы написать функцию, которая принимает в качестве аргумента функцию двух переменных f(x, y)
и возвращает другую функцию f(x)
, которая возвращает наибольшее значение y
, так что некоторый предикат p(f(x, y))
удовлетворяется. Например, я хотел бы знать самое большое y
, где f(x,y) > 0
.
Например,
# Given:
f <- function(x, y) ifelse(y <= x^2 & x > 0, 1, 0)
# Then:
g <- function(fn, pred) ...
g(f, function(y) > 0)(1) # => 1
g(f, function(y) > 0)(2) # => 4
g(f, function(y) > 0)(3) # => 9
# etc.
Я знаю верхнюю и нижнюю границы для x и y, но в остальном я ничего не знаю априори о функции f
, за исключением того, что она гладкая и непрерывная, за исключением границы. Ну, на самом деле я знаю, что это регрессионное соответствие из mgcv::gam
: я пытаюсь проследить контур функции и выдать объект функции из него в качестве входных данных для другой функции.
stat_contour
в ggplot2, кажется, делает что-то подобное из меша для рисования контуров. Я думал, может быть, это может предложить путь вперед, но я не уверен. Могу ли я сделать лучше, чем разделили?