簡體   English   中英

用curve()繪制R中的常數函數

[英]Plotting a constant function in R with curve()

所以我有一個錯誤...

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

這意味着功能Vectorize()將解決我的問題。 無論如何,這都是R做出的隱式決策的一個敏銳示例,這會導致行為不一致。

問題在於函數應返回與參數長度相同的向量。 在您的情況下,函數始終返回僅一個的向量,而不是n。 解決方案可能是

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

暫無
暫無

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

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