0

我在函数内部使用 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){"

我该如何解决这个问题?那里的语法问题是什么?我检查了许多网站,如果其他语法正确,则似乎如上。

非常感谢!

4

1 回答 1

4

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

R 生成的错误消息并不总是最有帮助的,但在这种情况下,它确实指出您非常接近问题区域。它向您展示了它在哪里“混淆”,但您需要自己找出原因!

在你解决了第一个问题之后,你会在第 6 行找到另一个问题(出于相同的原因),在那里你写Ifelse的是ifelse.

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

  1. 我发现if (LSWay == 0) {比阅读更容易if(LSWay == 0){
  2. 使用实际函数时,例如sum(x),您通常不会添加空格,从而更容易在大代码块中发现这些条件语句。

在这方面,Google R Style Guide是一本有趣的读物。

于 2012-07-19T07:38:52.620 回答