Трудно понять, как utilityf
должен выглядеть здесь, поэтому давайте рассмотрим более простой пример. У нас есть две функции square()
и inverse()
, и мы хотим сделать вычисление, которое включает возведение в квадрат одного набора чисел a
и умножение на обратное значение другого набора чисел b
. Сначала давайте создадим квадратные и обратные функции:
square <- function(a) {
a^2
}
inverse <- function(b) {
1 / b
}
Это просто функции, они ничего не сделают, пока мы не вызовем их и не передадим им вход.
Вот что вы пытались сделать в предыдущей версии этого вопроса:
output_bad <- function(a, b) {
square * inverse
}
Это не работает, потому что мы вообще не вызываем квадратные и обратные функции, мы не даем им входные данные , В итоге мы пытаемся умножить один function
объект на другой function
объект.
Вот правильный способ сделать это:
output <- function(a, b) {
square(a) * inverse(b)
}
Мы предоставляем a
и b
в качестве входных данных для нашей output
функции, и вызовите квадрат и обратный к ним, чтобы получить отдельные результаты от тех функций, которые мы затем можем умножить вместе. Теперь мы можем передавать различные значения a
и b
в output
:
> output(c(1, 2, 3), c(4, 5, 6))
# [1] 0.25 0.80 1.50