我如何在 r 中拥有一个将 2 个函数相乘的函数?

How do I have a function that multiplies 2 functions in r?

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

在这里计算 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)
}

我们提供 ab 作为 output 函数的输入,并对它们调用 square 和 inverse 以获得这些函数的单独结果,然后我们可以将它们相乘一起。现在我们可以将 ab 的不同值传递给 output:

> output(c(1, 2, 3), c(4, 5, 6))
# [1] 0.25 0.80 1.50