我如何在 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)
}
我们提供 a
和 b
作为 output
函数的输入,并对它们调用 square 和 inverse 以获得这些函数的单独结果,然后我们可以将它们相乘一起。现在我们可以将 a
和 b
的不同值传递给 output
:
> output(c(1, 2, 3), c(4, 5, 6))
# [1] 0.25 0.80 1.50
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)
}
我们提供 a
和 b
作为 output
函数的输入,并对它们调用 square 和 inverse 以获得这些函数的单独结果,然后我们可以将它们相乘一起。现在我们可以将 a
和 b
的不同值传递给 output
:
> output(c(1, 2, 3), c(4, 5, 6))
# [1] 0.25 0.80 1.50