Как у меня есть функция, которая умножает 2 функции в r? - PullRequest
0 голосов
/ 14 февраля 2020
w         <- -1
pqxf      <- function(y)(1)*(y) # replace p with price of y
pqyf      <- function(x)(w*x)-(w*16) # -1.25 is the wage rate
utilityf  <- function(x)(80)*(1/(x)) # the utility function C,l
hours     <- c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)

Я пытаюсь выяснить, как умножить pqxf и pqyf, чтобы сделать utilityf

1 Ответ

1 голос
/ 14 февраля 2020

Трудно понять, как 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
...