Ваш вопрос касается определения и вызова функций в 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
остается постоянным, поскольку вы нигде не меняете значение.
Небольшое дополнение:
Вы можете установить значения по умолчанию для своей функции, например
my_f <- function(w=-1.25) {w*10}
Вызов функции с передачей значения и без передачи значения для w
:
> my_f()
[1] -12.5
И со значением для w
(в данном случае пи):
> my_f(pi)
[1] 31.41593