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
相关产品推荐
相关产品推荐

