curve()在第一个示例中起作用,但在第二个示例中起作用,但它们看起来相同。为什么?

时间:2017-05-20 13:42:40

标签: r function plot statistics normal-distribution

我是R的新手,并尝试做一些练习。我想知道为什么第一个代码工作正常而第二个代码没有。当我尝试运行第二个代码时,它说他找不到函数a

1)

x = seq(from = - 9, to = 9, len = 100)
curve(dnorm(x,0,2),add = FALSE, from = -9, to = 9)

2)。

x = seq(from = - 9, to = 9, len = 100)
a = dnorm(x,0,2)
curve(a,add = FALSE, from = -9, to = 9)

1 个答案:

答案 0 :(得分:2)

使用curve总是令人费解。查看?curve的第一个参数expr,以及"详细信息"部分。

事实上,你误解了第一个(工作)案例。

curve(dnorm(x, 0, 2), from = 9, to = 9)

不使用您提供的xseq(-9, 9, length = 100),但会选择内部的采样点。请参阅n的参数curve。在这里,您在第二个(失败的)案例中将curve 正式参数x的函数传递给a而不是实值向量。< / p>

如果你不相信这一点,让我们改变显示行显示点:

curve(dnorm(x, 0, 2), n = 10, from = -9, to = 9, type = "p")
你知道吗?即使您已预设x <- seq(-9, 9, len = 100),图表上也只有10个点。

另一个补充示例是使用xname进行调整。让我们使用另一个变量,比如foo

curve(dnorm(foo, 0, 2), from = -9, to = 9, xname = "foo")

此R会话中没有变量foo,但上述代码有效。由于xname告诉curve foo是正式变量。