[英]Why does plot(Vectorize(function)) work but curve(Vectorize(function)) does not?
為什么plot(Vectorize(f))
工作,其中f
是 function,但curve(Vectorize(f))
不工作? 這種不一致讓我有點困擾。 這是一個完整的可重現示例:
set.seed(123)
N <- 9
X <- rnorm(N)
a <- 0.2
b <- 0.8
sigma <- 0.7
eps <- rnorm(N, 0, sigma)
Y <- a + b * X + eps
cor_p_value <- function(new_Y1)
{
Y[1] <- new_Y1
cor.test(X,Y)$p.value
}
lm_F_p_value <- function(new_Y1)
{
Y[1] <- new_Y1
anova(lm(Y ~ X))$Pr[1]
}
plot(Vectorize(cor_p_value), xlim = c(-50,50), lwd = 3)
curve(Vectorize(lm_F_p_value), col = "red", lwd = 3, lty = 2, add = TRUE)
# Error in curve(Vectorize(lm_F_p_value), col = "red", lwd = 3, lty = 2, :
# 'expr' must be a function, or a call or an expression containing 'x'
所以對於curve
,我必須做這個煩人的解決方法:
cu <- Vectorize(lm_F_p_value)
curve(cu, col = "red", lwd = 3, lty = 2, add = TRUE)
但為什么? Vectorize
返回相同的 function, plot
接受它, curve
沒有。 所有這些功能都來自基本的內置 R 包,所以我希望它們能夠配合並保持一致。 應該是bug吧?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.