R中的plot()vs curve():为什么curve()不接受内联定义的函数

时间:2016-10-19 16:31:16

标签: r

为什么绘图()& curve()在这种情况下表现不同? plot()似乎可以在定义函数时正常工作。而curve()似乎不喜欢它:

> plot(function(x) sin(x), 0,3.14)
> plot(sin, 0,3.14)
> 
> curve(sin, col="red",add=T)
> curve(function(x) sin(x), col="red",add=T)
Error in curve(function(x) sin(x), col = "red", add = T) : 
  'expr' did not evaluate to an object of length 'n'

这只是一种不一致还是有更深入的理解方法?

一个人可以使用命名函数的任何地方都不能总是使用函数的内联定义吗?

1 个答案:

答案 0 :(得分:1)

有一个plot.function - 函数。使用methods(plot)查看它是否可见,其代码可以通过以下方式查看:

 plot.function

它将其第一个参数发送到curve,然后在位置上匹配任何其他参数,最多4个作为from = from, to = to, xlim = xlim, ylab = ylab。任何其他参数必须按名称与curve

的名称匹配

curve - 函数没有任何方法,所以给它一个函数对象作为第一个参数失败。我同情您遇到的这种困难,但?curve帮助页面实际上并没有说您可以将函数作为第一个参数,而是说您可以给出一个R名称,即一个表达式(在松散的词语感觉,可以在符号表中查找,并以函数作为其值。在谈论R语言时,术语namesymbol是同义词。