m0_73904918 2023-04-04 20:11 采纳率: 50%
浏览 26
已结题

r语言怎么画分段函数

#遇到的问题
定义 𝑓(𝑥) =x^2 + 1,当 𝑥 > 1; 𝑓(𝑥) = 3𝑥2 − 1,当 0 < 𝑥 ≤ 1; 𝑓(𝑥) = 𝑥 − 1,当 𝑥 ≤ 0
.画出函数 𝑓(𝑥) 在 [-1,2] 上的图像
#my code

m <- function(x){
  if(x>1){f=x^2+1}
  if(x<=0){f=x-1}
  else{f=3*x^2-1}
  return(f)}
n <- Vectorize(m)
plot(m,-1,2,col=6)

#出现的问题
Error in if (x > 1) { : the condition has length > 1

##我知道如果函数只有两段的话可以用ifelse()来解决,但这个有三段没办法用此种方法,如果用curve函数的话,得分三次写,有点麻烦,有什么简便的方法来解决吗
希望得到大家的帮助,万分感谢!

  • 写回答

1条回答 默认 最新

  • Cmy_CTO 2023-04-04 20:21
    关注

    可以使用向量化函数ifelse来解决

    f <- function(x){ ifelse(x>1,x^2+1,ifelse(x<=0,x-1,3*x^2-1)) } plot(f,-1,2,type="l",col=6)

    这里ifelse函数嵌套使用
    如果x>1,则返回x^2+1,否则,进入下一层ifelse,
    如果x<=0则返回x-1,否则返回3*x^2-1。

    最后使用plot函数画图,指定type="l"来画出连续的曲线。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月4日

悬赏问题

  • ¥15 怎样采集或者其它途径拿到全国最新个体工商户数据
  • ¥20 我是一名大学生,想学习java是自学还是报培训班呢
  • ¥15 pycharm该如何爬取网易云歌曲下的评论?
  • ¥15 java调用sap webservice问题
  • ¥20 如何完全复现何恺明resnet论文里的结果,有代码吗,获得论文中的结果(如下图)
  • ¥15 mysql如果表行行数小于1000条还需要分区吗
  • ¥20 有关matlab自定义特殊算符的问题
  • ¥15 第15届蓝桥杯选拔赛斗鱼养殖场
  • ¥15 在vivado的FIFO使用中,FIFO有没有提供可以输出内部存储空间状态的端口?
  • ¥15 C++ QT内存数据匹配对比指导