我必须编写自己的函数来绘制二项分布的密度函数,从而绘制 当n = 20且p = 0.1,0.2,...,0.9时的适当图。我还需要对图表进行评论。
我试过了;
graph <- function(n,p){
x <- dbinom(0:n,size=n,prob=p)
return(barplot(x,names.arg=0:n))
}
graph(20,0.1)
graph(20,0.2)
graph(20,0.3)
graph(20,0.4)
graph(20,0.5)
graph(20,0.6)
graph(20,0.7)
graph(20,0.8)
graph(20,0.9)
#OR
graph(20,scan())
我的第一个问题:除了使用graph(20,p)
之外,有什么办法让我不需要多次写下scan()
行吗?
我的第二个问题:
我想在一台设备上看到图表,或者想点击ENTER
查看下一张图表。我写了
par(mfcol=c(2,5))
graph(20,0.1)
graph(20,0.2)
graph(20,0.3)
graph(20,0.4)
graph(20,0.5)
graph(20,0.6)
graph(20,0.7)
graph(20,0.8)
graph(20,0.9)
但图表太小了。如何通过给出头线n = 20和p =用于绘制图形的值来很好地呈现图形?[虽然可以通过在调用函数mtext()
之后编写graph
来完成但是这样做我必须写几次类似的线。所以我想这样做,包括在函数graph
中。 ]
我的上一个问题:
关于评论。图表显示,随着成功的概率,p正在增加,图表趋于正确,即图表是正确的。
有没有办法使用program
对图表发表评论?
答案 0 :(得分:7)
这是mapply
的一项工作,因为你循环了2个变量。
graph <- function(n,p){
x <- dbinom(0:n,size=n,prob=p)
barplot(x,names.arg=0:n,
main=sprintf(paste('bin. dist. ',n,p,sep=':')))
}
par(mfcol=c(2,5))
mapply(graph,20,seq(0.1,1,0.1))
答案 1 :(得分:2)
绘制基本图形是您经常要使用for
循环的次数之一。原因是因为大多数绘图函数都不可见地返回一个对象,但你对这些函数不感兴趣;你想要的只是绘图的副作用。循环忽略返回的对象,而*apply
系列将浪费精力收集和返回它们。
par(mfrow=c(2, 5))
for(p in seq(0.1, 1, len=10))
{
x <- dbinom(0:20, size=20, p=p)
barplot(x, names.arg=0:20, space=0)
}