簡體   English   中英

為什么這條涉及function curve()的語句會在R返回錯誤?

[英]Why does this statement involving the function curve() return an error in R?

我只是想知道為什么這個語句在 R 中返回錯誤

>   curve(function(x) x^2, from = -2, to = 2)

##Error in curve(function(x) x^2, from = -2, to = 2) : 
 #'expr' did not evaluate to an object of length 'n'

我知道這句話很管用。

>   curve(x^2, from = -2, to = 2)

據我所知,R 中 function curve() 的第一個參數應該是向量化的 function。因此,作為參數的function(x) x^2也應該是向量化的 function,因為它返回一個數值向量,其長度等於輸入數值向量的長度。

但是,我不能確定,因為我沒有嚴格的編程背景。 顯然,我錯了。

我認為expr=作為curve的第一個參數是在尋找 function 的名稱,而不是 function 本身。

expr:function 的名稱,或者寫為“x”的 function 的調用或表達式,其計算結果為與“x”長度相同的 object。

因此需要在外部聲明 function 才能工作:

f <- function(x) x^2
curve(f, from=-2, to=2) 

否則你可以 plot function 直接作為plot.function ,它實際上調用 function 內部的curve作為最后一行:

plot.function
#function (x, y = 0, to = 1, from = y, xlim = NULL, ylab = NULL, 
#    ...) 
#{
#    <snip>
#    curve(expr = x, from = from, to = to, xlim = xlim, ylab = ylab, 
#        ...)
#}

像:

plot(function(x) x^2, xlim=c(-2,2))

或者也可以做

curve((function(x) x^2)(x), from = -2, to = 2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM