> f(3) [1] 2.-6ren">
gpt4 book ai didi

r - stat_function 从函数生成平线

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

我有以下代码:

library("ggplot2")

f <- function(x)
{
if (x >= 2) {-1 + x + 0.3}
else {0}
}

graph <- ggplot(data.frame(x = c(0, 10)), aes(x))
graph <- graph + stat_function(fun=f)
print(graph)

这意外地产生了以下图表:

enter image description here

但是当我单独使用该函数时,结果是预期的:

> f(1)
[1] 0
>
> f(3)
[1] 2.3
>
> f(7)
[1] 6.3

怎么会这样?

最佳答案

请注意以下警告:

> f(c(0,10))
[1] 0
Warning message:
In if (x >= 2) { :
the condition has length > 1 and only the first element will be used

c(0,10) 中的第一个元素不大于或等于 2,并且由于您的函数未设计用于对值向量进行操作,因此它仅计算第一个元素并返回一个 0 - 这就是您对 print(graph) 的调用所显示的内容。这实际上给出了与上面相同的警告消息:

> plot(graph)
Warning message:
In if (x >= 2) { :
the condition has length > 1 and only the first element will be used

你只需要向量化你的函数:

f2 <- function(x)
{
ifelse(x>=2,-1+x+.3,0)
}
##
> f2(c(0,10))
[1] 0.0 9.3
##
graph2 <- ggplot(data.frame(x = c(0, 10)), aes(x))
graph2 <- graph2 + stat_function(fun=f2)
print(graph2)

enter image description here

关于r - stat_function 从函数生成平线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469143/

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