所以我是R的新手,我需要绘制一些函数。我对R中的curve
的理解是,它需要一个以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
我在做什么错了?
这可能有助于揭示我的主要功能只是在不同区域(边界内的总和,我的sigma为Binomial(30, theta)
循环)中评估的for
的质量函数(概率),因为我不知道如何在sigma
中正确创建一个R
函数。换句话说,它是一个累积分布函数。
最终,我试图将3个特定功能一起绘制在同一张图上。
感谢您的帮助! :)
答案 0 :(得分:1)
似乎您在函数定义中使用了某些Python(或类似代码)。
这是它的R
版本,对我来说,将在调用curve
时绘制结果。
puiss <- function(theta, inf, sup) {
total = 0
for(k in inf:sup) {
# "+=" does not work for R
total <- total + (choose(30,k) * (theta^k) * ((1-theta)^(30-k)))
}
# you need to use parentheses around total
return(total)
}