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

R语言自定义函数的参数有效性校验不生效问题排查

问题原因分析

你这个报错是逻辑运算符使用错误导致的,|| 是逻辑或关系,我们可以直接拆解你写的判断逻辑:

  • 当传入a=1时:a!=1 结果为FALSE,a!=2 结果为TRUE,逻辑或的规则是只要其中一个条件为真,整体结果就为真,所以整个判断条件结果为TRUE,直接触发stop报错。
  • 当传入a=2时:a!=1 结果为TRUE,a!=2 结果为FALSE,逻辑或整体结果仍然为TRUE,同样触发报错。
    等于你写的这个判断条件永远为真,不管传入什么值都会触发报错,自然达不到校验效果。
修复方案

你可以选择下面任意一种方案修改代码,都可以实现「只有a不是1或2的时候才触发报错」的校验逻辑:

方案1:将逻辑或替换为逻辑与

myplot2=function(d,a){
  if(!(is.data.frame(d)))
    stop("Error:Is not dataframe")
  
  if(a!= 1 && a!= 2){
    stop("Error:Has to be one or two")
  }
}

方案2:用%in%运算符,可读性更高

myplot2=function(d,a){
  if(!is.data.frame(d))
    stop("Error:Is not dataframe")
  
  if(!a %in% c(1,2)){
    stop("Error:Has to be one or two")
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:54:07