【问题标题】:evaluating piecewise function (Error in curve(..., : 'expr' did not evaluate to an object of length 'n')评估分段函数(曲线错误(...,:'expr' 未评估为长度为 'n' 的对象)
【发布时间】:2025-11-22 14:50:01
【问题描述】:

我正在尝试使用 R 创建分段函数。我的绘图函数有问题

a <- function(x){
ifelse(( x <-1),0,ifelse((-1<x & x<2),(x^3+1)/9ifelse((x>2),1,NA)))
}
plot(a,xlim=c(-5,5), ylim = c(-4, 7), col = "red")

我不确定我是否从未正确创建函数,或者我绘制它的方式是否有问题。分段函数有点令人困惑,因为它的间隔是 1 和 0 的直线,而从 -1 到 2 它是一个奇怪的函数。

【问题讨论】:

    标签: r


    【解决方案1】:

    你的函数中有两个错别字;一个是棘手的。

    (1) 在第三个ifelse 之前缺少一个逗号(这可能是剪切粘贴错误); (2) 在x&lt;(-1) 中,您需要括号(或至少一个空格),因此 R 不会认为您将值 1 分配给x(即x &lt;- 1)。

    a <- function(x) {
        ifelse(( x <(-1)),0,ifelse((-1<x & x<2),(x^3+1)/9,
                            ifelse((x>2),1,NA)))
    }
    plot(a,xlim=c(-5,5), ylim = c(-4, 7), col = "red")
    

    【讨论】: