2013-10-24 5 views
-6

У меня есть эта функция с R.Вычислить простая функция R

immediate.amput.EV <- function(Dead.prob=.010,Dead.cost=40000,Alive.prob=.0990,Alive.cost=50000,high=100,p.payoff=1) { 
    return((Dead.prob * Dead.cost) + (Alive.prob * Alive.cost)) 
}  

immediate.amput.EV() 

It's supposed to output : (0.010 * 40000) + (0.990 * 50000) = 400 + 49500 = 49900 
Instead it gives me: 5350 

Не могли бы вы сказать мне, почему? Спасибо ..

+0

это нравится, мне нужно, чтобы сохранить значение и когда я вызвать функцию мне нужно это значение, чтобы появиться .. –

+0

Я думаю, что Dea означает, что цифры отличаются от того, что ожидается –

+2

Да. .0990 * 50000 = 4950 не 49500. Таким образом, он дает правильный результат –

ответ

1

Как говорит Брайан Ханнайс: Измените определение Alive.prob на 1-Dead.prob. Хорошая привычка программирования, чтобы попытаться избежать избыточных (а затем, возможно, противоречивые) определения ...

function(Dead.prob=.010,Dead.cost=40000,Alive.prob=1-Dead.prob,Alive.cost=50000,high=100,p.payoff=1) { 
    return((Dead.prob * Dead.cost) + (Alive.prob * Alive.cost)) 
} 
0

Ваша математика ошибочна. В ваших комментариях вы добавили дополнительные 0

400 + 4950 NOT 49500 


.01 *40000 =400 and .099*50000= 4950 and 400+4950 =5350 

ответьте или ответьте на вопросы.

+0

Да, извините, это была ошибка с моей стороны, однако я ее отредактировал. –

+0

, так что теперь он дает правильный ответ – AwokeKnowing

Смежные вопросы