Настройка графика с 3 переменными - PullRequest
0 голосов
/ 20 февраля 2020
w         = -1.25
pqxf      <- function(y){(1)*(y)} # replace 1 with py and assign a value to py
pqyf      <- function(x){(w * 16)-(w * x)} # 
utilityf  <- function(x, y, w) { pqyf(x) * pqxf(y)* w} # 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)

#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?

1 Ответ

0 голосов
/ 20 февраля 2020

Ваш вопрос касается определения и вызова функций в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...