用曲线()绘制R中的常数函数

时间:2015-03-11 02:43:13

标签: r auto-vectorization

所以我有一个错误...

f <- function(x){return(1)}
curve(f(x),0,100,xname="x")

Error in curve(f(x), 0, 100, xname = "x") : 
'expr' did not evaluate to an object of length 'n'

考虑到这一点很奇怪

F <- function(x){return(0*x+1)}
curve(F(x),0,100,xname="x")

工作得很好......这让我想一想R如何处理data.frame()s。

a <- data.frame(1,2,3)
f(a)
# [1] 1
F(a)
#   X1 X2 X3
# 1  1  1  1

意味着Function Vectorize()将解决我的问题。 无论如何,这是R所做出的隐含决策的一个尖锐例子,导致行为不一致。

1 个答案:

答案 0 :(得分:1)

问题是函数应该返回与参数长度相同的向量。在你的情况下,而不是n,函数总是返回一个向量。解决方案可能是

 f <- function(x){return(rep(1,length(x)))}