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

R自定义Temperatureconverter函数出现unexpected input报错如何解决

R温度转换函数报错修复方案

代码存在的问题

  • 符号不规范:代码中使用了全角减号−和全角乘号×,R语言仅识别半角的-和*作为运算符号,这是触发本次报错的直接原因
  • 入参被覆盖:函数第一行执行了x = 0的赋值操作,会把用户传入的x参数直接覆盖为0,导致所有计算结果都不正确
  • 字符串未加引号:判断条件v == c和v == f中的c、f未加双引号,R会将其识别为未定义的变量,后续运行会触发对象未找到的报错
  • 逻辑结构错误:第一个if判断的闭合右括号位置错误,导致第二个if判断被嵌套在第一个if的执行逻辑内,仅当v等于c时才会判断v是否等于f,逻辑完全失效
  • 缺少异常处理:未对非法入参的场景做适配,当用户传入的第一个参数既不是"c"也不是"f"时,函数无返回值也无提示

修正后完整代码

Temperatureconverter <- function(v, x){
  # 摄氏度转华氏度
  if(v == "c") {          
    return(x * 9 / 5 + 32)
  # 华氏度转摄氏度
  } else if(v == "f"){             
    return((x - 32) * 5 / 9)
  # 非法入参提示
  } else {
    stop("第一个参数仅支持输入'c'(摄氏度转华氏度)或'f'(华氏度转摄氏度)")
  }
}

调用示例

  • 30摄氏度转华氏度:Temperatureconverter("c", 30) 返回结果为86
  • 86华氏度转摄氏度:Temperatureconverter("f", 86) 返回结果为30

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:42:01