2016-07-08 2 views
0

Ниже приведена функция, определенная для распределения bernoulli. Я новый пользователь R. Я не совсем понимаю следующие коды.Как определить функцию плотности bernoulli?

dbernoulli <- function(x, prob=0.5) { 
dbinom(x, size=1, prob=prob) 
} 

dbernoulli(y, prob=0.7) 

Я думал, что в определенной функции, мы заранее определили аргумент prob, как 0.5, так почему мы можем изменить его 0.7 когда мы используем определенную функцию? Являются ли эти коды резонансными? Могу ли я исправить это следующим образом?

dbernoulli <- function(x, prob) { 
dbinom(x, size=1, prob=prob) 
} 

dbernoulli(y, prob=0.7) 

ответ

2

Когда вы пишете function(x, prob=0.5), что вы говорите:

создать функцию, которая принимает два параметра,

  • x, без значения по умолчанию
  • и prob, со значением по умолчанию от 0.5.

Следовательно, если вы вызовите функцию dbernoulli(y) он назначит x = y и потому, что вы не передать значение для prob, он назначит prob = 0.5, потому что это значение по умолчанию, вы определили для него.

Теперь, если вы удалите значение по умолчанию для prob, как function(x, prob), то вы всегда будете обязаны указать Prob вы хотите использовать при вызове функции, как и в dbernoulli(y,prob = 0.7).

+0

Возможно, также стоит упомянуть частичное согласование аргументов и передачу аргументов по имени и размещению. т. е. 'dbernoulli (p = 0,7, x = y)' эквивалентно 'dbernoulli (y, 0,7)'. – N8TRO

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