Проблема в том, что lf
не векторизовано более n
; то есть, он не принимает векторы в качестве входных данных. Например, sum(1:x)
также не векторизовано над x
, что означает, что sum(1:(1:2))
не вернет c(1, 3)
. Нечто подобное происходит с
sum(choose(4,x)*choose(4, 4-x)*exp(x*n))
в терминах n
.
Теперь векторизация необходима из-за того, как вы хотите построить функцию (т. Е. plot
пытается использовать вектор в качестве входных данных). Одним из решений будет использование
plot(Vectorize(lf, "n"), from = -3, to = 3)
Другим было бы определение lf
в векторизации:
lf <- function(n)
sapply(n, function(nn)
choose(4, 3) * choose(4, 1) * exp(3 * nn) / sum(choose(4, x) * choose(4, 4 - x) * exp(x * nn)))
plot(lf, from = -3, to = 3)