使用if else inside函数时出错

时间:2012-07-19 07:16:26

标签: r

我在使用if else函数时遇到问题,我的代码是这样的:

ConvertWgtZooLS <- function(WgtZoo, LSWay, Pos){
    If(LSWay == 0){
      NewWgtZoo <- WgtZoo
    }else{
      BackPos <- BackMatrix(Pos,1)
      NewWgtZoo<- Ifelse((Sign(WgtZoo) * Sign(BackPos) * LSWay)>=0, WgtZoo, 0)
    }
    return(NewWgtZoo)
}

但是,当我在R中运行它时,错误消息显示为:

"Error: unexpected '{' in:
"ConvertWgtZooLS <- function(WgtZoo, LSWay, Pos){
    If(LSWay == 0){"

我该如何解决这个问题?那里的语法问题是什么?我查了很多网站,看来上面的if else语法是否正确。

非常感谢!

1 个答案:

答案 0 :(得分:4)

代码中的错误是您使用If而不是if,而R是区分大小写的。因此,可以使用另一个名为If的函数执行与if不同的函数,并且正如@danielkullmann指出的那样,该函数正是R正在寻找的函数。

R生成的错误消息并不总是最有用,但在这种情况下, 指向非常接近问题区域。它向您展示了它“迷茫”的地方,但是由您决定原因!

在您修复了第一个问题之后,您会在第6行找到另一个问题(出于同样的原因),您在其中写了Ifelse而不是ifelse

最后一点:R非常友好,因此最好在代码中留一些空间以提高易读性,尤其是使用ifelse语句。原因如下:

  1. 我发现if (LSWay == 0) {if(LSWay == 0){
  2. 更容易阅读
  3. 使用实际功能时,例如sum(x)通常会添加空格,从而更容易在大块代码中发现这些条件语句。
  4. Google R Style Guide在这方面是一个有趣的读物。