Итак, я новичок в R, и мне нужно написать некоторые функции.Насколько я понимаю, curve
в R состоит в том, что для него требуется функция, которая имеет x
в качестве единственного входа.Поскольку все мои функции - это просто разные представления одной и той же главной функции, я сначала подумал, что создам основную функцию, а затем определю каждую конкретную функцию по отдельности.
# The principal function
puiss <- function(theta, inf, sup) {
for(k in inf:sup) {
total += (choose(30,k) * (theta^k) * ((1-theta)^(30-k)))
}
}
# The specific functions I need to draw on the same plot
p1 <- function(x) { puiss(x,2,13) }
p2 <- function(x) { puiss(x,3,14) }
p3 <- function(x) { puiss(x,3,13) }
# Can't even get to trace just a single one... :'(
curve(p1,
0, 1, # from 0 to 1
main="puissance(theta)", # title
xlab="x", ylab="theta") # axes
curve(p2, add=T) # adding the other function
curve(p3, add=T) # adding the other function
Я получаю эту ошибку:
'expr' did not evaluate to an object of length 'n'
Я пробовал несколько подходов, но этот, казалось, был наиболее близким к тому, что должно было быть.
Среди других альтернатив, я пробовал:
- меняется с
<-
на =
для определенных функций - , не используя
{}
(скобки) для конкретных функций - , подключая
for
зацикливается непосредственно на кривой и заменяет theta
на x
и inf:sup
соответственно - , пытаясь использовать
p1(x)
внутри curve
- Я также читал, что некоторыераз
Vectorize()
необходимо, поэтому я попробовал Vectorize(p1)
внутри curve
Что я делаю не так?
Может помочь раскрыть, что моя основная функцияпросто функция массы (вероятности) Binomial(30, theta)
, оцененная в разных регионах(суммирование в границах, моя сигма, представляющая собой цикл for
, потому что я не мог понять, как правильно создать функцию sigma
в R
).Другими словами, это кумулятивная функция распределения .
В конечном счете, я пытаюсь нанести 3 конкретные функции вместе на одном графике.
Спасибо заПомогите!:)