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

curve() works in the first example but not the second, but they look identical. Why?

我是 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)

curve的使用总是百思不得其解。查看 ?curve 的第一个参数 expr,以及 "Details" 部分。

事实上,您误解了第一个(有效)案例。

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

不使用你给的xseq(-9, 9, length = 100),而是选择内部的采样点。请参阅 curve 的参数 n。在这里,您传递的是 curve 形式 参数 x 的函数,而不是实值向量,如第二个(失败)中的 a案例.

不信我们把线显改为点显:

curve(dnorm(x, 0, 2), n = 10, from = -9, to = 9, type = "p")

看到了吗?图上只有10个点,即使你预设了x <- seq(-9, 9, len = 100).

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

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

此 R 会话中没有变量 foo,但上面的代码有效。因为 xname 告诉 curve foo 是一个形式变量。