You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言绘制CDE编码对应图表的datas变量调整问题

问题原因

出错的核心是两处逻辑错误:

  • 之前使用行号区间筛选datas,只会保留靠前的ABC编码的行,直接过滤掉了后面的CDE编码所有数据
  • 自定义函数f1里错误混用了全局变量datas和传入的参数dat,导致逻辑混乱

修复步骤

  1. 替换错误的行索引筛选逻辑,改为按Days字段筛选所有编码符合要求的行
    把原来的
datas <- datas[dif:max(datas$Days, na.rm = TRUE),]

替换为

datas <- datas[datas$Days >= dif, ]

改完之后datas会同时保留ABC和CDE两个编码对应的Days3-6的所有行,符合你的要求。

  1. 修复f1函数内的全局变量混用问题,修改后的函数如下:
f1 <- function(dat, code_nm) {
  dat <- subset(dat,  Code == code_nm)
  
  max_day <- max(dat$Days, na.rm = TRUE)+1
  dif <- as.Date(dmda) - as.Date(df1$date1[1]) + 1
  # 仅操作传入的dat参数,不调用全局datas
  dat_filter <- dat[dat$Days >= dif, ]
  
  plot(Numbers ~ Days,  xlim= c(0,7), ylim= c(0,30),
       xaxs='i',data = dat_filter,main = paste0(dmda, "-", code_nm))
  
  model <- nls(Numbers ~ b1*Days^2+b2,start = list(b1 = 0,b2 = 0),data = dat_filter, algorithm = "port")
  
  new.data <- data.frame(Days = with(dat_filter, seq(min(Days),max(Days),len = 45)))
  new.data <- rbind(0, new.data)
  lines(new.data$Days,predict(model,newdata = new.data),lwd=2)
  coef<-coef(model)[2]
  points(0, coef, col="red",pch=19,cex = 2,xpd=TRUE)
  text(.99,coef + 1,round(coef,1), cex=1.1,pos=4,offset =1,col="black")
}

修改完成后先后调用f1(datas, "ABC")和f1(datas, "CDE")都可以正常生成图表。

内容的提问来源于stack exchange,提问作者user16774617

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:27:03