【问题标题】:Why am I getting unexpected input error for this function in R?为什么我在 R 中收到此函数的意外输入错误?
【发布时间】:2021-08-22 12:27:11
【问题描述】:

如果我输入例如 c, 2),我希望函数将华氏温度返回到摄氏方程,反之,如果我输入 f 则相反。这是我拥有的功能:


Temperatureconverter <- function(v,x){
  x = 0
  if(v == c) {          
    return(x*9/5+32)
  if(v == f){             
    return((x−32)×5/9)
  }}

这是错误:

Error in source("~/Documents/MAE4000/R/test.R", echo = TRUE) : 
  ~/Documents/MAE4000/R/test.R:7:14: unexpected input
6:   if(v == f){             
7:     return((x−
                ^

【问题讨论】:

  • 你写了return((x−32)×5/9) 但你应该使用* 进行乘法,而不是× 但是根据你的错误信息,我怀疑你的- 不是标准的-。我建议你删除它并重新输入。
  • ... 还有:看起来像“-”的减号实际上不是一个。
  • 此外,由于您将 x 设置为零,即常数,您将始终从函数返回相同的值。如果 v==c,则为 32,否则为 -160/9,大致约为 -18。

标签: r function if-statement


【解决方案1】:

我重写了如下代码来解决所有缺失的细节:

Temperatureconverter <- function(v,x)
{
  if(v == "c") return(x*9/5+32)
  if(v == "f") return((x-32)*5/9)
  else return ("Please enter c for Celsius or f for Fahrenheit")
}

Temperatureconverter("f",100) # calling the function 

cmets 是对的:

  • 在接收到 x 的值后将 x 设置为零会使 计算错误
  • “减号”不是正确的符号
  • 乘法应始终为 *。

【讨论】:

  • 非常感谢大家!我是 R 新手,这些小问题让我很头疼。非常感谢您的帮助!
  • Sverdo,如果这回答了您的问题,请accept it。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
相关资源
最近更新 更多