gpt4 book ai didi

r - 如果我在分段函数(ggplot2)上从 >= 更改为 >,为什么我的连续图会突然发生变化?

转载 作者:行者123 更新时间:2023-12-02 01:27:25 25 4
gpt4 key购买 nike

我将使用ggplot2在R上描绘一个连续图库,基于分段函数。

fun1 <- function(x){
ifelse(x<=-2, -1.5*(-x)^2, NA)
}
fun2 <- function(x){
ifelse(x>-2, 6*x-5, NA)
}
gg <- ggplot(data.frame(x = c(-5, 5)),
aes(x = x))+
stat_function(fun = fun1, n=1001)+
stat_function(fun = fun2, n=1001)
print(gg)

这显示了分段函数的正确图形。

enter image description here

但是如果我改变条件稍微不同,这样 ifelse(x<-2, -1.5*(-x)^2, NA)ifelse(x>=-2, 6*x-5, NA) ,然后图表的第一部分突然无法正确描绘。

enter image description here

这似乎是ifelse函数现在总是返回 -6对于所有值 x ,无论它是否是<=-2或不。

但是为什么会突然发生这样的变化呢?我尝试使用标准绘图函数描绘连续曲线,但仍然得到相同的结果......

最佳答案

这就是当您在运算符之间不留空格时会发生的情况。除了降低代码的可读性之外,有时还会使解析器感到困惑。在您的情况下,解析器解释 x<-2x <- 2 ,即“将 2 分配给 x”,而不是 x < -2 ,即“x 小于负 2”。

当您使用分配作为 ifelse 中的第一个参数时,它将评估赋值的“真实性”,并且由于 2 是正整数,因此它将始终评估为 true。由于在计算该子句时,x 为 2,因此对于该函数的所有输入值,您的输出将为 -1.5 * (-2)^2 ,即-6。

如果您使用空格(或括号),则不会发生这种情况:

fun1 <- function(x){
ifelse(x < -2, -1.5*(-x)^2, NA)
}
fun2 <- function(x){
ifelse(x > -2, 6*x-5, NA)
}
gg <- ggplot(data.frame(x = c(-5, 5)),
aes(x = x))+
stat_function(fun = fun1, n=1001)+
stat_function(fun = fun2, n=1001)
print(gg)

enter image description here

关于r - 如果我在分段函数(ggplot2)上从 >= 更改为 >,为什么我的连续图会突然发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74172562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com