w = -1.25
pqxf utilityf <- function(x, y, w) { pqyf(x) * pqxf(y)* w} # the utility function C,lhours <- c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)
#functions are turned into data frames
pqy <- data.frame("consumption" =
pqyf(c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)))
pqx <- data.frame("leisure" =
pqxf(c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)))
utility <- data.frame("utility" =
utilityf(c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)))
[当我尝试运行此程序时,我收到一个错误:
Error in pqxf(y) : argument "y" is missing, with no default
如何定义y?
您的问题是有关在R中定义和调用函数的。
您定义函数utilityf
以接受三个参数x,y,w
。然后在函数内部使用这些变量来调用其他函数。由于您没有在utilityf
的声明中定义默认值,因此需要将值传递给函数。您在pqxf
中呼叫的utilityf
如何知道y
是什么?
您在脚本中声明了w
。但是,utilityf
不知道您要它使用w=-1.25
。
尝试以下操作:
w = -1.25
x = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)
y = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)
pqxf <- function(y){(1)*(y)}
pqyf <- function(x){(w * 16)-(w * x)}
utilityf <- function(x, y, w) { pqyf(x) * pqxf(y)* w}
utility <- data.frame("utility" = utilityf(x,y,w)
或替代:
w = -1.25
x = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)
y = c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,20)
pqxf <- function(y){(1)*(y)}
pqyf <- function(x){(w * 16)-(w * x)}
utilityf <- function(x, y) { pqyf(x) * pqxf(y)* w}
utility <- data.frame("utility" = utilityf(x,y)
在最后一种情况下,函数utilityf
采用w
的“全局”值。在这两种情况下,w
保持不变,因为您无需在任何地方更改该值。